Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Einzelne Zelle in DBGrid einfärben (https://www.delphipraxis.net/165224-einzelne-zelle-dbgrid-einfaerben.html)

t0mmy 20. Dez 2011 09:16

AW: Einzelne Zelle in DBGrid einfärben
 
Danke aber wie kann ich nur eine gewisse länge einfärben?

DeddyH 20. Dez 2011 09:31

AW: Einzelne Zelle in DBGrid einfärben
 
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;

t0mmy 20. Dez 2011 10:25

AW: Einzelne Zelle in DBGrid einfärben
 
Welche Uses muss ich für Types.Rect einbinden? Es wird nämlich nicht erkannt

DeddyH 20. Dez 2011 10:28

AW: Einzelne Zelle in DBGrid einfärben
 
Schau mal in die allererste Zeile meines Beispiels, oder hieß die Unit unter Delphi 7 anders? Zur Not wirf halt einen Blick in die Hilfe.

t0mmy 20. Dez 2011 12:36

AW: Einzelne Zelle in DBGrid einfärben
 
hmm immer wieder das genaue lesn! sry für die Frage -.-


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz