Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
Delphi 12 Athens
|
AW: Einzelne Zelle in DBGrid einfärben
20. Dez 2011, 10:31
Noch' n Gedicht:
Delphi-Quellcode:
uses Types; //für Rect-Funktion benötigt
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
R: TRect;
Gr: TDBGrid;
RdPercent: integer;
begin
Gr := Sender as TDBGrid;
//Standard-Zeichnen ohne Berücksichtigung von State
Gr.DefaultDrawColumnCell(Rect, DataCol, Column, State);
//Spalte "ObjectId" selbst zeichnen
if Column.FieldName = 'ObjectId' then
begin
//roter Rahmen
R := Rect;
Gr.Canvas.Pen.Color := clRed;
Gr.Canvas.Rectangle(R);
//Zufallswert zwischen 0 und 100 als fiktive Prozentangabe
RdPercent := Random(101);
//Rechteck anhand des Zufallswertes neu definieren
R := Types.Rect(R.Left,
R.Top,
R.Left + trunc((R.Right - R.Left) * (RdPercent / 100)),
R.Bottom);
//...und einfärben
Gr.Canvas.Brush.Color := clRed;
//Prozentangabe mittig ausgeben
Gr.Canvas.Rectangle(R);
Gr.Canvas.Brush.Style := bsClear;
R := Rect;
DrawText(Gr.Canvas.Handle, PChar(IntToStr(RdPercent) + '%'), -1, R, DT_CENTER or DT_VCENTER or DT_SINGLELINE);
end;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|
|
Zitat
|