Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Einzelne Zelle in DBGrid einfärben

  Alt 20. Dez 2011, 09: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 = 'ObjectIdthen
    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
  Mit Zitat antworten Zitat