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 Einzelne Zellen im Grid markieren ?? (https://www.delphipraxis.net/11488-einzelne-zellen-im-grid-markieren.html)

seifman 7. Nov 2003 18:14


Einzelne Zellen im Grid markieren ??
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!

Ich weiss, daß es möglich ist im Stringgrid die Zeilen verschiedenfarbig darzustellen. Es muß doch auch irgendwie möglich sein, nur einen bestimmten Bereich der Zellen farbig zu markieren, ohne daß ich die gesamte Zeile einfärben muß. Falls das nicht möglich ist, wäre ich über Hinweise erfreut, wie ich das in anderen Grids machen kann.

Damit man sich in etwa eine Vorstellung machen kann, wie das ganze Aussehen soll, habe ich hier mal ein Bild bereitgestellt. Es wäre nett, wenn mir jemand dabei helfen könnte, da ich in Sachen Delphi noch ein absolutes Greenhorn bin.

:wall:

[edit=sakura]Ich habe das Bild mal als Anhang gespeichert. So bleibt dieses auch in Zukunft verfügbar ;-) Damit kannst Du es auch wieder vom Server löschen. Mfg, sakura[/edit]

himitsu 7. Nov 2003 18:41

Re: Einzelne Zellen im Grid markieren ??
 
Im OnDrawCell-Ereignis kann man in die Zellen zeichnen.
Das wird für jede Zelle aufgerufen, wenn sie neu gezeichnet wird.
ACol und ARow gibt die zu zeichnente Zelle an.
In Rect steht die Position der Zelle im StringGrid1.Canvas.

Delphi-Quellcode:
Procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
  Begin
    {es wird jede Zelle in der 5. Spalte und 3. Zeile rot gefüllt}
    If (ACol = 4) or (ARow = 2) Then Begin {Abfrage ob rot ausgefüllt wird}
      StringGrid1.Canvas.Brush.Color := clRed;
      StringGrid1.Canvas.FillRect(Rect);
    End;
  End;

seifman 7. Nov 2003 19:02

Re: Einzelne Zellen im Grid markieren ??
 
Danke. Aber das hatte ich auch schon mal probiert. Jedoch hatte ich dabei das Problem, das ein Text, der in der Zelle Stand einfach nicht angezeigt wurde.
Gibt es vieleicht noch eine andere Lösung dafür?

himitsu 7. Nov 2003 19:26

Re: Einzelne Zellen im Grid markieren ??
 
:oops: Wusste nicht mehr, das Schrift auch schon vor dieser Routine hingeschrieben wurde.
(hatte das nur mit einem leeren StringGrid getestet)

Also muss diese auch noch gezeichnet werden.
Delphi-Quellcode:
Procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
  Begin
    If (ACol = 4) or (ARow = 2) Then Begin
      StringGrid1.Canvas.Brush.Color := clRed;
      StringGrid1.Canvas.FillRect(Rect);
{}    StringGrid1.Canvas.Font := StringGrid1.Font;
{}    StringGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2,
{}      StringGrid1.Cells[ACol, ARow]);
    End;
  End;

seifman 11. Nov 2003 17:12

Re: Einzelne Zellen im Grid markieren ??
 
Danke dir vielmals. :thuimb:
Es funktioniert jetzt so, wie ich das wollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 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