![]() |
Datenbank: Firebird • Version: ?? • Zugriff über: IBCConnection
DBGrid1 färben
procedure TForm1.FormCreate(Sender: TObject);
begin ?????????????????????????????????????????????? end; habe eine DBGrid, sagen wir in der zweiten spalte ist die Zeile (Status) Status 1, oder 2 oder 3 oder 4 oder 5 oder 6 oder 7. wenn status 1 aktiv ist, soll sich die Zeile gelb färben bei 3 rot bei 6 hellgrün bei 7 grün wie mache ich das am besten? |
AW: DBGrid1 färben
Dafü musst du einen Ownerdraw implementieren (OnDrawColumnCell). Diese Methode wird dann bei jeder Zelle aufgerufen.
|
AW: DBGrid1 färben
Delphi-Quellcode:
geht nicht ? was ist falsch
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); var aValue: string; begin if Column.Index = 2 then begin {nummer der spalte im dbgrid} aValue:= Column.Field.asString; {suchbegriff auslesen} if aValue = 'Erfasst' then begin DBGrid1.Canvas.Brush.Color := clred; end; end; end; |
AW: DBGrid1 färben
|
AW: DBGrid1 färben
die zeile färb sich nicht ein !
wenn in der spalte 3 = der wert Erfasst steht! dann soll sich die zeile färben! |
AW: DBGrid1 färben
Hi,
hast du ownerdraw auf True stehen? LG, Frederic |
AW: DBGrid1 färben
hey ???
wo stelle ich das ein ? finde nix?
Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); var aValue: string; begin if Column.Index = 2 then begin {nummer der spalte im dbgrid} aValue:= Column.Field.asString; {suchbegriff auslesen} if aValue = 'Erfasst' then begin DBGrid1.Canvas.Brush.Color := clred; end; end; end; |
AW: DBGrid1 färben
hier ! habe selber eine lösung gefunden!
Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); var aValue: string; begin if Column.Index = 1 then begin {nummer der spalte im dbgrid} aValue:= Column.Field.asString; {suchbegriff auslesen} if aValue = 'Erfasst' then begin DBGrid1.Canvas.Brush.Color := clYellow; DBGrid1.Canvas.Font.Color := clblack end else begin DBGrid1.Canvas.Brush.Color := clWhite; DBGrid1.Canvas.Font.Color := clblack end; DBGRid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end; |
AW: DBGrid1 färben
Delphi-Quellcode:
wie bekomme ich das hin, dass die ganze zeile gelb gefärbt wird?
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); var aValue: string; begin if Column.Index = 1 then begin {nummer der spalte im dbgrid} aValue:= Column.Field.asString; {suchbegriff auslesen} if aValue = 'Erfasst' then begin DBGrid1.Canvas.Brush.Color := clYellow; DBGrid1.Canvas.Font.Color := clred end else begin DBGrid1.Canvas.Brush.Color := clWhite; DBGrid1.Canvas.Font.Color := clblack end; DBGRid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end; end. delphi 5 |
AW: DBGrid1 färben
Indem Du nicht den Column-Index abfragst, sondern direkt den Feldwert des aktuellen Datensatzes?
[edit]
Delphi-Quellcode:
Ungetestet, sollte aber im Groben so funktionieren.[/edit]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DBGrid1.Datasource.Dataset.FieldByName(Feldname) = 'Erfasst' then begin DBGrid1.Canvas.Brush.Color := clYellow; DBGrid1.Canvas.Font.Color := clred end else begin DBGrid1.Canvas.Brush.Color := clWhite; DBGrid1.Canvas.Font.Color := clblack end; DBGRid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end. |
AW: DBGrid1 färben
Den dieser Callback wird ja für jede Zelle aufgerufen un du überprüft/zeichnest nur bei Zellen einer Spalte
|
AW: DBGrid1 färben
Delphi-Quellcode:
so geht es ! Danke !
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DBGrid1.DataSource.DataSet.FieldByName('STATUS').Value = 'Erfasst' then begin DBGrid1.Canvas.Brush.Color := clYellow; DBGrid1.Canvas.Font.Color := clred end else begin DBGrid1.Canvas.Brush.Color := clWhite; DBGrid1.Canvas.Font.Color := clblack end; DBGRid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; wie gehe ich weiter vor, wenn ein zweiter wert 'beendet ' in grün angezeigt werden soll? |
AW: DBGrid1 färben
Einfach eine else if-Bedingung dazwischensetzen. In dem Fall sollte man die Zwischenavariable aber wohl besser wieder einführen, die ich weggekürzt hatte.
Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); var Wert: string; begin Wert := DBGrid1.DataSource.DataSet.FieldByName('STATUS').Value; if Wert = 'Erfasst' then begin DBGrid1.Canvas.Brush.Color := clYellow; DBGrid1.Canvas.Font.Color := clred; end else if Wert = 'beendet' then begin DBGrid1.Canvas.Brush.Color := clWhite; DBGrid1.Canvas.Font.Color := clGreen; end else begin DBGrid1.Canvas.Brush.Color := clWhite; DBGrid1.Canvas.Font.Color := clblack; end; DBGRid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz