Entwickler-Ecke

Datenbanken - DBGrid --> farben


Vidocq - Di 07.01.03 15:25
Titel: DBGrid --> farben
Kann man in DBGrid einzelne Rows einfarben ???


LCS - Di 07.01.03 15:55

Hi und herzlich willkommen
Dazu musst du die Eigenschaft DefaultDrawing auf False setzen und eine Routine für das Ereignis OnDrawColumnCell bereitstellen. In kleines Beispiel:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TfrmDesigner.grdDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  with grd.Canvas do begin
    if  tbl.RecNo mod 2 = 0 then
      Brush.Color  := clYellow
    else
      Brush.Color  := clAqua;
    FillRect(Rect);
  end;
  grd.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

Damit wird das Gitter grd für die Tabelle tbl abwechselnd Blau und Gelb gezeichnet.

Gruss Lothar


Vidocq - Di 07.01.03 16:32

danke ... fuer die schnelle hilfe


Rudi77 - Mi 15.01.03 17:46

Hi!

Ich habe dazu auch gleich noch eine Frage. Jetzt sind zwar die einzelnen Rows schön eingefärbt, aber wenn der Anwender in eine Zelle klickt, wird der Text weiß und man kann ihn nicht mehr lesen.
Kann ich dies auch irgendwie beeinflussen? :oops:


CenBells - Do 16.01.03 01:14

du musst mit der eigenschaft
grd.canvas.pen.color spielen
und den State abfragen. Schau mal in der hilfe, was es da zu TGridDrawState gibt.

Gruß
Ken