DBGrid färben

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Zet_Bonton
Beiträge: 39
Registriert: Di 7. Apr 2009, 17:11

DBGrid färben

Beitrag von Zet_Bonton »

Hallo Leute,

und zwar hab ich folgenden Code der nicht funktioniert

Code: Alles auswählen

procedure TForm6.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
if column.FieldName = 'Name' then
    if trim(column.Field.AsString)='Klaus' then
    begin
        DBGrid1.Canvas.Brush.Color :=clred;
    end;
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
ich habe 7 Fieldnames, eines davon ist der Name, und wenn unter dem Fieldname der Name Klaus auftaucht soll im DBGrid die Zeile rot markiert werden.
Jedoch tuts irgendwie nicht. ich hab sogar gedebugged und beim debuggen hab ich entdeckt das die erste if-schleife unwahr ist und der compiler springt sofort aus der Abfrage raus. An was könnte es liegen, kann mir jemand da kurz weiterhelfen.
Zuletzt geändert von monta am Mo 20. Apr 2009, 10:57, insgesamt 1-mal geändert.
Grund: Codetags

Zet_Bonton
Beiträge: 39
Registriert: Di 7. Apr 2009, 17:11

Re: DBGrid färben

Beitrag von Zet_Bonton »

zu beachte, dieser Fieldname Name kommt an 4 Stellen

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Re: DBGrid färben

Beitrag von baba »

Moin, moin,

CodeTags wären Klasse. Was hältst Du hiervon?

Code: Alles auswählen

if UpperCase(column.FieldName) = 'NAME' then
Gruß
Baba.

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: DBGrid färben

Beitrag von MmVisual »

Oder das:

Code: Alles auswählen

if SameText(column.FieldName, 'NAME') then
EleLa - Elektronik Lagerverwaltung - www.elela.de

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: DBGrid färben

Beitrag von MmVisual »

Anderes Beispiel:

Code: Alles auswählen

procedure TfrmMain.grdPParamDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
   If (gdSelected In State) Or (gdFocused In State) Then
   Begin
      TDBGrid(Sender).Canvas.Brush.Color:=clNavy;
      TDBGrid(Sender).Canvas.Font.Color:=clWindow;
   End Else Begin
      If Sametext(Column.Field.FieldName, 'Wert') Then
  	   Begin
       	If Not qParamID.IsNull Then
         	TDbGrid(Sender).Canvas.Brush.Color := $13F5D8
      	Else TDbGrid(Sender).Canvas.Brush.Color := clWindow;
   	End Else TDbGrid(Sender).Canvas.Brush.Color := clInactiveCaptionText;
 	End;
   TDBGrid(Sender).Canvas.FillRect(Rect);
   TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten