Einzelnen Beitrag anzeigen

Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#1

Alternierende Farben in TDBGrid

  Alt 23. Dez 2014, 06:58
Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDac
Hallo
Ich habe mit Delphi XE7
ein alternierendes DBGrid gebastelt und wollte
wissen ob man das noch verbessern kann.

Delphi-Quellcode:
type TDBGrid=Class(Vcl.DBGrids.TDBGrid) procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL; end;

procedure TDBGrid.WMVScroll(var Message: TWMVScroll); begin Self.Invalidate; inherited; end;

procedure TForm1.DBGrid1MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin if Sender is TDBGrid then (Sender as TDBGrid).Invalidate; end;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
 MyRowColors : array[Boolean] of TColor = (clLime, clMoneyGreen);
var
 RowNo : Integer;
 OddRow : Boolean;
 begin
if Sender is TDBGrid then begin
 with (Sender as TDBGrid) do begin

 if (gdSelected in State) then begin
 // Farbe für die Zelle mit dem Focus
 // color of the focused row
 Canvas.Brush.Color := clblue;
 end else begin
// Weil das mit RecCount leider nicht mehr geht
// habe ich mir dies einfallen lassen
// and it works
  RowNo := Rect.Top div (Rect.Bottom - Rect.Top);
   OddRow := Odd(RowNo);
 Canvas.Brush.Color := MyRowColors[OddRow];

 // Font-Farbe immer schwarz
 // font color always black
 Canvas.Font.Color := clBlack;
  Canvas.FillRect(Rect);
 // Denn Text in der Zelle ausgeben
 // manualy output the text
 if Column.Field <> nil then
 Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Column.Field.AsString);

 end;
 end end; end;
Ach ja fast vergessen

Frohe Weihnachten
Martin MIchael

Geändert von ATS3788 (23. Dez 2014 um 07:00 Uhr) Grund: Fehler bereinigt
  Mit Zitat antworten Zitat