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