Autor Beitrag
Andi1982
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: Mo 06.12.04 18:29 
Hallo,
ich habe hier im Forum gesucht wie man im DBGrid spalten oder Zellen einfärben kann und bin auch fündig geworden. Jetzt habe ich mir folgenden Code erstellt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  If Query1.Fields[12].AsString = 'N' then
    DbGrid1.Canvas.Brush.Color := clRed;
end;


Allerdings funktioniert das nicht. Er macht mir einfach keine Spalte Rot! Obwohl da welche dabei sind bei denen er das tun sollte.

Dann habe ich diesen Code probiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  If Query1.Fields[12].AsString = 'N' then
    DbGrid1.Font.Color := clRed;
end;


Dann macht er mir aber die Gesamte Schrift im DBGrid Rot sobald die bedingung einmal zutrifft.

Weiß jemand wie ich den oberen Code richtig benutzen muss damit meine Spalten Rot werden?

Gruß Andi

_________________
Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 06.12.04 18:43 
Habe in einem anderen Topic mal etwas Source gepostet. Leider gabs da keine Rückmeldung, obs funktioniert. Vergleiche einfach mal oder probiers aus.
Andi1982 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: Mo 06.12.04 18:53 
Hey Danke Jasocul,

habe meinen Fehler gefunden:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  If Query1.Fields[12].AsString = 'N' then
    DbGrid1.Canvas.Brush.Color := clLtGray;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;


So funktioniert es. Habe diese zeile "DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);" vergessen. Was auch immer diese bewirkt! Kann mir das vielleicht jemand erklären?

Ansonsten ist dieses problem gelöst.

Gruß andi

_________________
Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 06.12.04 19:01 
Vermutlich hast du die Eigenschaft "DefaultDrawing" noch auf True stehen. Dann ist es dem DBGrid mehr oder weniger egal, was du an eigenen Vorgaben im Source machst. Durch deine zusätzliche Anweisung sagst du mi Prinzip, dass er die jetzigen Einstellungen als Default verwenden soll. Sobald du aus der Routine rauskommst, dürfte das wieder hinfällig sein. So ist zumindest meine Interpretation. Probier mal aus, wie dein Grid beim Scrollen reagiert. Ich fürchte fast, dass es da Probleme geben kann. Ich hoffe aber nicht. :wink: