Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - DBGrid Zeilen farblich variieren


Becks16 - So 15.07.07 20:34
Titel: DBGrid Zeilen farblich variieren
Hallo

Ich wollte man nach fragen ob das geht das ich in dem DBGrid die 1. Zeile meinetwegen Blau mache und die 2. denn rot und dann immer im wechsel. Funktioniert das ? wenn ja wie ?

mfg
martin


Moderiert von user profile iconChristian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 16.07.2007 um 20:05


Blawen - So 15.07.07 22:12

Schau Dir mal den letzten Beitrag an: http://forum.dsdt.info/viewtopic.php?t=16368&highlight=

Das JvDBGrid (JVCL) kann dies übrigens von Hause aus.


Becks16 - Mo 16.07.07 19:56

mit dem quelltext macht er das , das alles eine farbe hat aber nicht das er das variiert

hier mal der code


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure Tf_umsatzuebersicht.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
dbgrid1.Canvas.brush.color:=clactivecaption;
dbgrid1.Canvas.font.color:=clwhite;
dbgrid1.defaultdrawcolumnCell(rect, 1, column,state);

end;


mfg


Blawen - Mo 16.07.07 22:03

user profile iconBecks16 hat folgendes geschrieben:
mit dem quelltext macht er das , das alles eine farbe hat aber nicht das er das variiert

hier mal der code


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure Tf_umsatzuebersicht.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
dbgrid1.Canvas.brush.color:=clactivecaption;
dbgrid1.Canvas.font.color:=clwhite;
dbgrid1.defaultdrawcolumnCell(rect, 1, column,state);

end;


mfg

Nun, Dir fehlt schlicht ein Argument für das automatische wechseln der Farben.

Im gelinkten Beispiel wird dies z.B. so erledigt:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
// Feld-Wert prüfen und entsprechende Farbe wählen 
  bValue := qryIn.FieldByName('Status_geloescht').AsBoolean;
  IF bvalue = true 
  THEN 
    begin 
      dbgIn.Canvas.Brush.Color := clRed; 
      dbgIn.Canvas.Font.Color := clWhite; 
    end 
  ELSE 
    begin 
      dbgIn.Canvas.Brush.Color := clWhite; 
      dbgIn.Canvas.Font.Color := clBlack; 
    end
  // Felder zeichnen 
  dbgIn.DefaultDrawColumnCell(Rect, DataCol, Column, State);