Entwickler-Ecke
Datenbanken - TDBTable: Während d. Zeichnens d. Zellen die aktuelle färben
xNighthawkx - Di 09.02.10 16:48
Titel: TDBTable: Während d. Zeichnens d. Zellen die aktuelle färben
Hallo ich habe das Problem, das ich beim Zeichnen der Zellen in der Tabelle die aktuelle Zelle die in Bearbeitung ist farbig markiert wird.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| procedure TForm2.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var test1: Real; RowNo: Integer; farbe : integer; begin with (Sender as TDBGrid) do begin showmessage(inttostr(Clientdataset1.Fields[Column.Field.Index].Tag)); if (gdSelected in State) then begin Canvas.Brush.Color := clblue; Canvas.Font.Color := clwhite; end else begin rowno := Clientdataset1.RecNo; test1 := (RowNo / 2) - trunc(RowNo / 2); if test1 = 0 then begin farbe := clWhite end else begin farbe := clltgray; end; Canvas.Brush.Color := farbe; Canvas.Font.Color := clBlack; end; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Column.Field.AsString); end end; |
Hoffe es kann mir einer helfen, denn ich weiß wirklich nciht weiter. Hab die Stelle im Code auch markiert.
War nur ein Versuch um mir erstmal den Index der Zelle auszugeben aber klappte nicht.
Mfg
Torsten Richter - Mo 22.02.10 15:44
Hallo xNighthawkx,
hab mal folgenden Code bei mir rauskopiert :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure TForm2.DBGridKontoDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin with (Sender as TDBGrid) do begin if (gdSelected in State) then begin Canvas.Font.Style := Canvas.Font.Style + [fsBold]; Canvas.Brush.Color := clBlue; Canvas.Font.Color := clWhite; end else begin Canvas.Font.Style := Canvas.Font.Style - [fsBold]; if DataSource.DataSet.RecNo mod 2 = 0 then begin Canvas.Brush.Color := clWhite end else begin Canvas.Brush.Color := clHellBlau; end; Canvas.Font.Color := clBlack; end; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Column.Field.AsString); end; end; |
unschön ist, dass du nicht übergebene Eigenschaften ansprichst (Clientdataset1)
die zwingen dich jedesmal, den Code anzupassen, falls du mehrere DBGrids benutzt
also nicht rowno := Clientdataset1.RecNo sondern
rowno :=(Sender as TDBGrid).DataSource.DataSet.RecNo
hth
Torsten
Moderiert von
Narses: Delphi-Tags hinzugefügt
xNighthawkx - Do 25.02.10 15:00
super ;)
Danke für deine Hilfe :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!