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 TreeNode / Stringgrid Schriftfarbe ändern (https://www.delphipraxis.net/636-treenode-stringgrid-schriftfarbe-aendern.html)

theomega 16. Aug 2002 16:34


TreeNode / Stringgrid Schriftfarbe ändern
 
wie kann ich möglichst einfach die Schrif-Farbe einer TTreeNode verändern?
und
wie kann ich möglichst einfach die Schrif-Farbe einer Zelle eines Stringgrids verändern?

MathiasSimmack 16. Aug 2002 17:21

Beide Controls sollten ein "OnDraw???"-Event haben, das du dafür benutzen kannst. Beim TreeView hab´ ich´s nie ausprobiert (bei der ListView schon), und beim StringGrid weiß ich, dass es geht, weil ich da mal bei einem kleinen Projekt HTML-Codes inkl. eines kleinen Vierecks mit der entsprechenden Farbe pro Zeile angezeigt habe.

theomega 16. Aug 2002 18:26

und dann ? was soll ich in dem ondraw machen? ich habe ger keine Ahnung, nachdem es keine font.color oder so gibt.

MathiasSimmack 16. Aug 2002 19:29

Doch gibt es. Immerhin hat so ein TreeView oder StringGrid doch eine "Canvas". Ich habe mal ein altes Beispiel für eine StringGrid rausgekramt und die Teile rausgenommen, die dich wahrscheinlich nicht interessieren:

Code:
[b]procedure[/b] TMenuForm.sg2DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
[b]begin[/b]
  [color=#000080][i]// selection?[/i][/color]
  [b]if[/b](gdSelected [b]in[/b] State) [b]then[/b]
    [b]begin[/b]
      sg2.Canvas.Brush.Color := clHighlight;
      sg2.Canvas.Font.Color := clHighlightText;
    [b]end[/b]
  [b]else[/b]
    [b]begin[/b]
      sg2.Canvas.Brush.Color := clWindow;
      sg2.Canvas.Font.Color := clWindowText;
    [b]end[/b];

  [color=#000080][i]// draw text[/i][/color]
  [b]if[/b](lowercase(sg2.Cells[ACol,ARow]) = 'nil') [b]then[/b] sg2.Canvas.Font.Style := [fsBold]
    [b]else[/b] sg2.Canvas.Font.Style := [];

  sg2.Canvas.Textout(Rect.Left,
   (Rect.Bottom + Rect.Top - sg2.Canvas.TextHeight(sg2.Cells[ACol,ARow])) [b]div[/b] 2,
    sg2.Cells[ACol,ARow]);
[b]end[/b];

theomega 16. Aug 2002 19:59

schön ist die möglickeit nicht, und einfach auch nicht, da kann ich ja gleich auf ein Canvas zeichnen, ohne stringgrid.


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