Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[C++ Builder] DBGrid column/row colors

Pagina: 1
Acties:
  • 290 views sinds 30-01-2008

Verwijderd

Topicstarter
Tja, sorry hoor maar als je voor elk wissewasje een dergelijk topic opent, dan kan je niet op veel credit rekenen.
Ja, ook sorry hoor, maar iederen moet ergens beginnen en ik had al aangegeven dat ik een beginner ben op het gebied van BDE en databases in C++ Builder. Ik spit de help files en examples door maar ik kom niet altijd tot een oplossing via die weg. En daarom zoek en vraag ik naar een oplossing. Misschien dat ik als beginner nog veel moet leren om zonder gedragsfouten topics te plaatsen maar ik doe mijn best. Ik vermoed dat een forum toch daarvoor dient en voor ieder een toevlucht is als ie het niet weet. Mits natuurlijk dat je zelf al gezocht hebt.

De toegereikte oplossing in het andere topic is nu duidelijk maar ik zoek nu naar een mogelijkheid om een enkele cel van kleur of propertie te wijzigen met een row / column selectie.

Ik heb al met RowCount bezig geweest maar dit wil niet echt lukken.

Verwijderd

Wanneer je een cel in een DBGrid een kleurtje wil geven doe je dat in 't OnDrawDataCell event.
Daarin krijg je een Sender mee (je grid) die een Canvas heeft, een Rect die aangeeft welk stukje scherm die cel bestrijkt, en een Field die aangeeft welke database informatie op die cel van toepassing is. Vervolgens kun je je met FillRect, PaintRect, etc. uitleven om die cel van een kleurtje of welk effect dan ook te voorzien.

Verwijderd

Topicstarter
ik heb hier een stukje Delphi code gevonden die hetzelfde doel moet bereiken, nu is Delphi en C++ wel een beetje gelijkaardig maar toch is het niet helemaal duidelijk:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{ Define custom colors }
  const
    clPaleGreen = TColor($CCFFCC);
    clPaleRed =   TColor($CCCCFF);
  begin
    { Set default font color }
    DBGrid1.Canvas.Font.Color := clBlack;
    { Is current cell the focused cell? }
    if (gdFocused in State) then begin
      DBGrid1.Canvas.Brush.Color := clBlack;
      DBGrid1.Canvas.Font.Color := clWhite;
    end
    { Not focused, is it the target field Terms? }
    else if (Field.FieldName = 'Terms') then
      { Check field content for one of two possible values }
      if (Field.AsString = 'FOB') then
        { If field contains "FOB" paint green }
        DBGrid1.Canvas.Brush.Color := clPaleGreen
      else
        { If field contains "Net 30" paint red }
        DBGrid1.Canvas.Brush.Color := clPaleRed
    else
      { Paint non-focused and non-target cells white }
      DBGrid1.Canvas.Brush.Color := clWhite;
    { Draw the cell! }
    DBGrid1.DefaultDrawDataCell(Rect, Field, State);
  end;

[ Voor 92% gewijzigd door Verwijderd op 10-08-2007 23:32 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je topic is dicht en het is onterecht? Lees hier!

En dan dump je nu een stuk code en mogen wij het even verduidelijken :?
Wat is er dan niet duidelijk?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.