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 Im DBGrid Zeilen abwechselnd farbig hinterlegen (https://www.delphipraxis.net/35644-im-dbgrid-zeilen-abwechselnd-farbig-hinterlegen.html)

VizeTE 10. Dez 2004 08:25


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

Sharky 10. Dez 2004 08:36

Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
 
Zitat:

Zitat von VizeTE
.. beide kennen aber keinen Parameter wie "Row". Aus diesem Grund kenne ich nicht die aktuelle Zeile in der gerade gezeichnet wird....

Hai VizeTE,
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;

VizeTE 10. Dez 2004 19:27

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:
DataSource.DataSet.RecNo
den aktuellen Datensatz wieder. Wenn ich aber das DBGrid gezeichnet wird werden ja auch viele Zellen gezeichnet, die verschieden vom aktuellen Datensatz sind?
Oder unterliege ich da einem Irrtum?

Vielen Dank,
VizeTE

FLINKER_FINGER 7. Dez 2007 13:44

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

DeddyH 7. Dez 2007 13:46

Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
 
Pseudo-Code:
Delphi-Quellcode:
If DataSource.DataSet.FieldByName('Foo').AsString = 'bar' then...

FLINKER_FINGER 7. Dez 2007 13:49

Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
 
Alter Falter ! Du bist echt der größte DeddyH

Danke !!!!! :thumb:

FLINKER_FINGER 7. Dez 2007 14:10

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 ??

alzaimar 7. Dez 2007 14:20

Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
 
Zeichne doch einfach den Zellinhalt nicht sondern nur den Hintergrund...

FLINKER_FINGER 7. Dez 2007 14:22

Re: Im DBGrid Zeilen abwechselnd farbig hinterlegen
 
wie mache ich das ?

DeddyH 7. Dez 2007 14:30

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 22:57 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