![]() |
Im DBGrid Zeilen abwechselnd farbig hinterlegen
Hallo.
Wie die Überschrift schon berichtet möchte ich gern in einem DBGrid jede zweite Zeile markieren. Bei einem StringGrid würde ich das machen indem ich bei dem Ereignis OnDrawCell den Parameter "Row" prüfe und bei allen ungeraden Rows den Hintergrund neu zeichne. Bei dem DBGrid gibt es aber "nur" OnDrawColumnCell und OnDrawDataCell, beide kennen aber keinen Parameter wie "Row". Aus diesem Grund kenne ich nicht die aktuelle Zeile in der gerade gezeichnet wird. Vielen Dank, VizeTE |
Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
Zitat:
das kannst Du über die Eigenschart .RecNo des TDataSets machen. z.B.:
Delphi-Quellcode:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState); begin with (Sender as TDBGrid) do begin if ((DataSource.DataSet.RecNo mod 2) = 0) then //jede zweite Zeile berücksichtigen begin if (not (gdSelected in State)) then begin Canvas.Brush.Color := clGreen; //Farbe die jede zweite Zeile bekommen soll. Canvas.FillRect(Rect); end; end; if ((not (dgRowSelect in Options)) and (gdFocused in State)) then //Wenn RowSelect = False die aktive Zelle blau färben begin Canvas.Brush.Color := clBlue; //Farbe der selektierten Zelle wenn RowSelect = False; Canvas.FillRect(Rect); end; Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Field.AsString); //Denn Text in der Zelle ausgeben end; end; |
Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
mmm...geht das so? Ich habs noch nicht probiert aber nach meinem Verständnis gibt mir
Delphi-Quellcode:
den aktuellen Datensatz wieder. Wenn ich aber das DBGrid gezeichnet wird werden ja auch viele Zellen gezeichnet, die verschieden vom aktuellen Datensatz sind?
DataSource.DataSet.RecNo
Oder unterliege ich da einem Irrtum? Vielen Dank, VizeTE |
Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
Könnte man auch bei einem bestimmten Inhalt in einer Zelle die ganze Zeile in einer Farbe einfärben ?
Denke mal man müsste nur diese Zeile im orbigen Quellcode verändern, aber ich komme nicht drauf wie...
Delphi-Quellcode:
if ((DataSource.DataSet.RecNo mod 2) = 0) then
|
Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
Pseudo-Code:
Delphi-Quellcode:
If DataSource.DataSet.FieldByName('Foo').AsString = 'bar' then...
|
Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
Alter Falter ! Du bist echt der größte DeddyH
Danke !!!!! :thumb: |
Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
Liste der Anhänge anzeigen (Anzahl: 1)
Hmmm aber ein Problem gibt es doch noch...
Bei Zahlenfeldern haut er mir da jetzt 2 mal die Zahl rein... wie kann ich das behebe ?? |
Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
Zeichne doch einfach den Zellinhalt nicht sondern nur den Hintergrund...
|
Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
wie mache ich das ?
|
Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
Die letzte Zeile im Code von Sharky auskommentieren (die mit Canvas.Textout)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 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-2025 by Thomas Breitkreuz