Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi dbgrid zeile einfärben ? (https://www.delphipraxis.net/91578-dbgrid-zeile-einfaerben.html)

agm65 7. Mai 2007 11:16


dbgrid zeile einfärben ?
 
moin leute...also ich hab das forum durchsucht aber leider nichts gefunden.
ich kann einzelne zellen einfärben und ganze spalten aber keine zeilen.

Delphi-Quellcode:
  if Column.FieldName = 'created' then
    begin
      DBGridMain.Canvas.Brush.Color := clLime;
      DBGridMain.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;

wie kann ich jetzt alle felder einer zeile einfärben ? danke euch !

Udontknow 7. Mai 2007 11:28

Re: dbgrid zeile einfärben ?
 
Hallo!

Ist das nicht ein Oxymoron? Wenn du einzelne Zellen färben kannst, was hindert dich daran, alle Zellen einer Zeile zu färben?

Siehe Ereignis OnDrawColumnCell, dort einfach die Farbe in Abhgängigkeit der Zeile zeichnen (Canvas des DBGrids bemalen, den Parameter Rect nutzen).

Cu,
Udontknow

agm65 7. Mai 2007 11:30

Re: dbgrid zeile einfärben ?
 
haben sie vll code dazu ?

Udontknow 7. Mai 2007 12:13

Re: dbgrid zeile einfärben ?
 
Hier der Code :

Delphi-Quellcode:
procedure TFrame_AbgWertpapiere.DBGrid1DrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);
  var Cl:TColor;
begin
  inherited;

  Cl:=$AAAAFF;
  if DM.DatasetID.AsInteger MOD 3 = 0 then
    Cl := $AAFFFF;
  if DM.DatasetID.AsInteger MOD 2 = 0 then
    Cl := $AAFFAA;

  //Hintergrundfarbe
  TDBGrid(Sender).Canvas.Brush.Color:=Cl;
  TDBGrid(Sender).Canvas.Brush.Style:=bsSolid;
  TDBGrid(Sender).Canvas.Pen.Style:=psclear;
  TDBGrid(Sender).Canvas.FillRect(Rect);

  //Text (muss separat gezeichnet werden)
  TDBGrid(Sender).Canvas.Pen.Style:=psSolid;
  TDBGrid(Sender).Canvas.Pen.Color:=clBlack;
  TDBGrid(Sender).Canvas.TextRect(Rect,Rect.Left+2,Rect.Top+2,Field.AsString);

end;
Cu,
Udontknow

agm65 7. Mai 2007 12:44

Re: dbgrid zeile einfärben ?
 
hey cool, das geht auch jetzt wird alles eingefärbt aber wie kriege ich da hetzt noch meine bedingung rein die mir nur diese eine zeile markiert ?

Delphi-Quellcode:
 if Column.FieldName = 'created' then
    if (Column.Field.Text = '04.05.2007 20:01:19') then

Udontknow 7. Mai 2007 13:06

Re: dbgrid zeile einfärben ?
 
Du darfst nicht erst auf die aktuelle Spalte prüfen, sonst läuft er ja für alle anderen Spalten gar nicht erst in die Prüfung des Feldwertes rein!

Delphi-Quellcode:
  if Dataset.FieldByName('created').asString='04.05.2007 20:01:19') then
    cl:=$FFFF00;
Cu,
Udontknow

agm65 7. Mai 2007 13:36

Re: dbgrid zeile einfärben ?
 
weder das dataset vom query noch vom datasource lässt sich verwenden ich bekomme immer ...feld nicht gefunden ?

Udontknow 7. Mai 2007 14:19

Re: dbgrid zeile einfärben ?
 
Zitat:

Zitat von agm65
weder das dataset vom query noch vom datasource lässt sich verwenden ich bekomme immer ...feld nicht gefunden ?

Was heisst nun Dataset von Query? Schreib es mal mit "TDBGrid(Sender).Datasource.Dataset.FieldByName".. .

Cu,
Udontknow

mkinzler 7. Mai 2007 15:16

Re: dbgrid zeile einfärben ?
 
Heist das Feld der Datenbanktabelle auch wirklich so?

agm65 7. Mai 2007 15:24

Re: dbgrid zeile einfärben ?
 
strange , gleicher fehler ! field not found

ja, habs 3 mal geprüft und das hier geht ja auch:
Delphi-Quellcode:
  if Column.FieldName = 'created' then
    if (Column.Field.Text = '04.05.2007 20:01:19') then
    begin
      DBGridMain.Canvas.Brush.Color := clLime;
      DBGridMain.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz