![]() |
DBGrid formatieren - Abhängig vom Inhalt
Hallo,
ich suche nach einer Möglichkeit die Zellen eines DBGrids entsprechend des Inhaltes zu formatieren. Damit habe ich die aktuelle Zelle beeinflussen können:
Delphi-Quellcode:
Damit habe ich das komplette Grid eingefärbt:
procedure TMain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); begin dbgrid1.Canvas.Brush.Color :=clgreen; end;
Delphi-Quellcode:
Was ich will ist in etwa sowas:
dbgrid1.Color:=clRed;
Delphi-Quellcode:
Hat jemand einen Tip für mich?
if (Field.AsString = 'R')then
begin Background := clRed; end Oder geht das vielleicht mit der Standard DBGridKomponente garnicht?? Dirk |
Re: DBGrid formatieren - Abhängig vom Inhalt
Du müsst dafür sorgen, dass die Farbe wieder zurückgesetzt wird
|
Re: DBGrid formatieren - Abhängig vom Inhalt
Hallo,
also ich mache das etwa so:
Delphi-Quellcode:
Ich frage quasi bei jeder Zelle, welchen Wert das Feld hat, nach dem ich mich bei der Formatierung richten will.
TForm.DBGridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin With DBGrid do case Datasource.DataSet.FieldByName('STATUS').Value of 1 : begin Canvas.Brush.Color:=clRed; DefaultDrawColumnCell(Rect,DataCol,Column,State); end; 2 : begin Canvas.Brush.Color:=clLime; DefaultDrawColumnCell(Rect,DataCol,Column,State); end; 3 : begin Canvas.Brush.Color:=clBlue; DefaultDrawColumnCell(Rect,DataCol,Column,State); end; end; end; Grüße |
Re: DBGrid formatieren - Abhängig vom Inhalt
Hallo,
vielen Dank für deine Hinweise, die haben mir schon ein Stück weiter geholfen - allerdings funktioniert es noch nicht ganz richtig. Ich habe jetzt folgendes:
Delphi-Quellcode:
Ergebnis sind eingefärbte Zeilen und nicht Zellen.
procedure TMain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); begin With DBGrid1 do if DataModule1.CrossQry_Month.FieldByName('1').Value = 'H' then begin Canvas.Brush.Color:=clRed; DefaultDrawColumnCell(Rect,DataCol,Column,State); end else if DataModule1.CrossQry_Month.FieldByName('1').Value = 'W' then begin Canvas.Brush.Color:=clBlue; DefaultDrawColumnCell(Rect,DataCol,Column,State); end end; PS: Die Spalte hat die Bezeichnung '1' ( 1 steht für den ersten Tag des Monats usw.) So komme ich noch nicht zum Ziel... Hast du noch einen Tip? Dirk |
Re: DBGrid formatieren - Abhängig vom Inhalt
Überprüfe noch die Column.
|
Re: DBGrid formatieren - Abhängig vom Inhalt
Zitat:
Ich kann zwar mit
Delphi-Quellcode:
eine Spalte auswählen aber wie soll ich abfragen welche Zelle gerade überprüft wird :gruebel:
dbgrid1.Columns.Items[i]
Ich habe mal wieder ein 40er Brett vorm Kopf... Dirk |
Re: DBGrid formatieren - Abhängig vom Inhalt
Da der CallBack für jede Zelle aufgerufen wird, wirkt er auch für alle Spalten einer Zeile. Die aktuelle Spalte wird als Parameter übergeben
|
Re: DBGrid formatieren - Abhängig vom Inhalt
Zitat:
Ich komme hier heute nicht mehr weiter. Dirk |
Re: DBGrid formatieren - Abhängig vom Inhalt
Überprüfe noch z.B. mit Column.FieldName, ob es auch die Spalte des entsprechenden Feldes ist.
|
Re: DBGrid formatieren - Abhängig vom Inhalt
Zitat:
Vielleicht kann mir mal irgendjemand das Brett wegschlagen und in meinem Code (siehe oben) reinschreiben wie das gemeint ist mit dem Column.FieldName. Ich habe doch schon die Spalte abgefragt mit FieldByName='1'. Ich werde mit mir langsam ungeduldig und ohrfeige mich gleich selber :wall: :wall: Bytheway - die Delphi Hilfe ist absolut fürn Po! Wenn man mal ein Beispiel der Verwendung (Codeschnipsel) finden würde, wäre man oftmals weiter. Da kann sich Delphi, CodeGear oder wie auch immer, ne Scheibe von Microsoft abschneiden! |
Re: DBGrid formatieren - Abhängig vom Inhalt
Delphi-Quellcode:
if Column.FieldName = 'Wuppdi' then //nur bei der Spalte des Feldes "Wuppdi"
|
Re: DBGrid formatieren - Abhängig vom Inhalt
Zitat:
Das hatte ich vorhin zwar schon aber es funktionierte nicht. Wahrscheinlich weil ich in den ganzen If's und end's ins Straucheln gekommen bin. Danke nochmal. Jetzt wird die Zelle behandelt. Himmmmell nochmal :oops: Dirk |
Re: DBGrid formatieren - Abhängig vom Inhalt
Zitat:
Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 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