| Autor |
Beitrag |
Crowbar
      
Beiträge: 180
WinXP, SP2
D6 Enterprise
|
Verfasst: Di 04.02.03 16:52
Hallo,
wie kann ich in einem DBGrid jede 2. Zeile z.B. mit einem grünen Hintergrund darstellen.
Mit den Spalten klappt es über TForm1.FilterDBGridDrawColumnCell(...), aber die Zeilen...?
Crowbar
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Di 04.02.03 17:48
Mach das doch auch in dem Ereignis, du überprüfst halt, ob die Zeile durch 2 teilbar ist oder net (mod) und dann machste die Zelle farbig.... du machst ja bei den spalten auch nix anderes....
Gruß
|
|
Crowbar 
      
Beiträge: 180
WinXP, SP2
D6 Enterprise
|
Verfasst: Di 04.02.03 18:10
Das Problem hierbei ist nur, dass ich für das Zählen der Zeilen die Table.RecNo nehmen müsste. Nun, und dann stimmt meine DBGird-Sortierung nicht mit der Table.RecNo überein. Dadurch kann es dann sein, dass ich 4 nacheinanderfolgende farbige Zeilen habe, statt abwechselnd.
Gruss Crowbar
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Di 04.02.03 19:15
Warum musst Du da Table.RecNo nehmen? Das Ereignis OnDrawColumnCell bietet doch die Variable DataCol, die die derzeitige Zeile anzeigt. Ich hab da 2 Prozeduren drausgemacht:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure Tform1.DBGridauftraegeDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if einstellungenform.CBcolored.Checked then ColorGrid(DBGridauftraege, mainform.IBAuftraege, Rect, DataCol, Column, State); end;
procedure Tform1.ColorGrid(dbgIn: TDBGrid; qryIn: TIBQuery; const Rect: TRect;DataCol: Integer; Column: TColumn;State: TGridDrawState); var iValue: LongInt; begin if (DataCol mod 2)<>1 then dbgIn.Canvas.Brush.Color := clred else dbgIn.Canvas.Brush.Color := clwhite;
// Feld zeichnen dbgIn.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; |
Die erste ist das Ereignis (habs net so verändert, da wird noch ne Abfrage gemacht, obs farbig sein soll) und die zweite prüft welche Farbe genommen werden soll, je nachdem obs ne gerade oder ungerade Zeile ist. Probier das mal, müsste funktionieren.
Gruß
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Di 04.02.03 23:33
hallo UGrohne!
datacoll beschreibt die spalten und nicht die zeilen  bei einem 'normalen' DBGrid kann man nur über Recno auf die 'zeilen' zugreifen. und das sieht bei einem gesetzten filter oft nicht so toll aus. da bleibt dann nur der ausweg zu fremdkomponenten übrig, bei denen man auf die rows zugreifen kann. zb VUBGrid oder SMDBGrid
mfg, stefan
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mi 05.02.03 00:15
Ups, stimmt, da hab ich nen Denkfehler gemacht, sorry. Gut, dann würde ich ne Variable setzen. Sobald DataCol wieder 0 ist, wird die Variable umgeschaltet und die andere Farbe genommen
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure Tform1.ColorGrid(dbgIn: TDBGrid; qryIn: TIBQuery; const Rect: TRect;DataCol: Integer; Column: TColumn;State: TGridDrawState); var ungerade:Boolean; begin if (DataCol=0) then ungerade:=not ungerade; if ungerade then dbgIn.Canvas.Brush.Color := clred else dbgIn.Canvas.Brush.Color := clwhite; // Feld zeichnen dbgIn.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; |
Ein bisschen Phantasie walten lassen.
Also das hab ich mir gerade in 30sec ausgeknobelt, hängt mich net auf, wenns net funktioniert, is nur so ne Idee. Natürlich sollte die Variable nen Anfangswert haben... Also besser Unit-Weit deklarieren und irgendwo initialisieren, in einem Ereignis vom Query bzw Table.
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Mi 05.02.03 00:27
Hallo,
was passiert wenn Du satt Table.RecNo, Field.RecNo oder Field.Index benutzt?
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
|