Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StringGrid, Eigenschaften einer Zelle ändern (https://www.delphipraxis.net/36068-stringgrid-eigenschaften-einer-zelle-aendern.html)

mung 15. Dez 2004 13:40


StringGrid, Eigenschaften einer Zelle ändern
 
Hi,

Also ich brauch Irgendwas um das Aussehen einzelner Zellen zu veränder, am besten Farblich.

Delphi-Quellcode:
  StringGrid.Cells[x,y].Color:=clRed;//Wäre Perfekt, kann ja aber net gehen

Gruss, mung

GeorgPeifer 15. Dez 2004 14:00

Re: StringGrid, Eigenschaften einer Zelle ändern
 
Delphi-Quellcode:
procedure TForm1.StringGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  s: string;
begin
  with (Sender as TStringGrid) do
  begin
    begin
       if (Row=ARow) and (ACol=2) then begin
          Canvas.Brush.Color := clNavy;
          Canvas.Font.Color := clYellow;
       end else begin
          Canvas.Brush.Color := clWhite;
          Canvas.Font.Color := clBlack;
       end;
       if (ACol<2) or (ARow=0) then begin
          Canvas.Brush.Color := clBtnFace;
          Canvas.Font.Color := clBlack;
       end;
       Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, cells[acol, arow]);
       Canvas.FrameRect(Rect);
       s:=Cells[ACol,ARow];
       Canvas.FillRect(Rect); // Zellfarbe zeichnen
       DrawText(Canvas.Handle, PChar(s), Length(s), Rect, DT_SINGLELINE or DT_Center or DT_VCENTER); // Text zentriertend;
    end;
  end;
end;
so zum Beispiel wird jeder Text zentriert, und je nach Reihe oder Spalte kannst Du beliebige Farben einbauen

mung 15. Dez 2004 16:05

Re: StringGrid, Eigenschaften einer Zelle ändern
 
THX erstmal, aber wie bekomme ich des für eine Zelle hin und im Event: OnSelectCell?
Hab mich leider oben falsch ausgedrückt :oops: ich hoffe ihr wisst jetzt was ich meine :wink:

Wofür ist eigentlich:
Delphi-Quellcode:
 StringGrid.Objects[x,y]
Für jeden Kommentar dankbar, mung

Quake 18. Dez 2004 15:29

Re: StringGrid, Eigenschaften einer Zelle ändern
 
StringGridDrawCell wird beim Zeichnen des Grids für jede Zelle aufgerufen. Du mußt also nur per if-then oder case-of die Parameter ACol und ARow auswerten.
Mit StringGrid.Objects[x,y] kannst du irgendein Objekt an ein Zelle heften. Ich habe mal damit Checkboxen an die Zelle geheftet und diese in der Zelle anzeigen lassen.

ciao
Quake


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:30 Uhr.

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