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 (VirtualTreeView) Schriftfarbe einer Zeile (o. Zelle) ändern (https://www.delphipraxis.net/121688-virtualtreeview-schriftfarbe-einer-zeile-o-zelle-aendern.html)

Viktorii 2. Okt 2008 14:03


(VirtualTreeView) Schriftfarbe einer Zeile (o. Zelle) ändern
 
Hallo zusammen.

Ich möchte bei meinem VirtualTreeView welches ich als ListView-Ersatz verwende die Schriftfarbe einer Zeile, oder besser noch, einer Zelle ändern.
Ich habe es geschafft die Hintergrundfarbe zu ändern:

Delphi-Quellcode:
procedure TMainForm.VSTBeforeItemErase(Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode;
  ItemRect: TRect; var Color: TColor; var EraseAction: TItemEraseAction);
var
  pNodeData       : PTreeData;

begin
  pNodeData := FVirtualStringTreeBFInfo.GetNodeData(Node);

  with Canvas do
  begin
    if pNodeData.Changed then
      Color := CHANGEDCOLOR;

    if pNodeData.Conflict then
      Color := CONFLICTCOLOR;

    EraseAction := eaColor;
  end;
Leider ändert sich so die gesamte Textfarbe meines Fensters:

Delphi-Quellcode:
procedure TMainForm.VSTBeforeItemErase(Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode;
  ItemRect: TRect; var Color: TColor; var EraseAction: TItemEraseAction);
var
  pNodeData       : PTreeData;

begin
  pNodeData := FVirtualStringTreeBFInfo.GetNodeData(Node);

  with Font do
  begin
    if pNodeData.Changed then
      Color := CHANGEDCOLOR;

    if pNodeData.Conflict then
      Color := CONFLICTCOLOR;

    EraseAction := eaColor;
  end;

Und so ändert sich garnichts:

Delphi-Quellcode:
procedure TMainForm.VSTBeforeItemErase(Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode;
  ItemRect: TRect; var Color: TColor; var EraseAction: TItemEraseAction);
var
  pNodeData       : PTreeData;

begin
  pNodeData := FVirtualStringTreeBFInfo.GetNodeData(Node);

  with Canvas.Font do
  begin
    if pNodeData.Changed then
      Color := CHANGEDCOLOR;

    if pNodeData.Conflict then
      Color := CONFLICTCOLOR;

    EraseAction := eaColor;
  end;
Gibt es eine Möglichkeit das zu erreichen was ich möchte?

Vielen Dank :dp:

P.S.: manchmal lese ich VirtualTreeView und manchmal VirtualStringTree. Wo liegt da der Unterschied?

Tyrael Y. 2. Okt 2008 14:35

Re: (VirtualTreeView) Schriftfarbe einer Zeile (o. Zelle) än
 
Da gabs das Ereignis OnBeforeCellPaint mein ich.
Da müsste es gemacht werden.

VirtualTreeView = VirtualstringTree....die Leute meinen dasselbe

ToFaceTeKilla 2. Okt 2008 14:40

Re: (VirtualTreeView) Schriftfarbe einer Zeile (o. Zelle) än
 
Guckstu hier

Hat mir heute auch schon weitergeholfen ;-)

Phoenix 2. Okt 2008 14:41

Re: (VirtualTreeView) Schriftfarbe einer Zeile (o. Zelle) än
 
Zitat:

Zitat von Viktorii
P.S.: manchmal lese ich VirtualTreeView und manchmal VirtualStringTree. Wo liegt da der Unterschied?

VirtualTreeView ist das 'Produkt'. Der VirtualStringTree ist eine einzelne Komponente / Klasse aus dem VirtualTreeView Paket.


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