Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Treeview einzelnes Treenode durchstreichen? (https://www.delphipraxis.net/75622-treeview-einzelnes-treenode-durchstreichen.html)

Schaedel 22. Aug 2006 13:38


Treeview einzelnes Treenode durchstreichen?
 
Hallo und guten Tag,

Ich habe einen Treeview mit mehreren dynamisch erzeugten Treenodes.
Nun möchte ich den Text eines bestimmten Treenodes durchstreichen.

Jemand eine Idee?


Dank im Vorraus :gruebel:

Schaedel

Leonard 22. Aug 2006 14:08

Re: Treeview einzelnes Treenode durchstreichen?
 
Zitat:

Zitat von Schaedel
Hallo und guten Tag,

Ich habe einen Treeview mit mehreren dynamisch erzeugten Treenodes.
Nun möchte ich den Text eines bestimmten Treenodes durchstreichen.

Jemand eine Idee?


Dank im Vorraus :gruebel:

Schaedel

Hallo,

meinste erste Idee ist, das Ereignis OnCustomDrawItem zu verwenden um in die Zeichnung der Nodes einzugreifen. Wenn das Node, was gerade gezeichnet werden soll eine bestimmte Markierung hat, (die du ihm gegeben hast, damit du weisst, welches durchgestrichen werden soll) dann kannst du ja selber die Zeichnung übernehmen. Ist das Node nicht gekennzeichnet, dann verwendest du die Standardzeichenroutine. Die Hilfe zu OnCustomDrawItem zeigt (in D7) ein Beispiel, wie man es verwenden kann.

mfg Leonard

Schaedel 22. Aug 2006 14:18

Re: Treeview einzelnes Treenode durchstreichen?
 
Hallo,
die Idee hatte ich auch schon...
Das Problem ist das TTreeNode keine Font eigenschaft besitzt.
Lediglich das Treeview hat ne Eigenschaft Font... und das bezieht sich ja dann auf das Ganze.
Über Canvas komm ich auch nicht ran... ist das selbe Problem.

Trotzdem Danke

Ps
hab Delphi 5 Enterprise ;)

Leonard 22. Aug 2006 14:32

Re: Treeview einzelnes Treenode durchstreichen?
 
Zitat:

Zitat von Schaedel
Hallo,
die Idee hatte ich auch schon...
Das Problem ist das TTreeNode keine Font eigenschaft besitzt.
Lediglich das Treeview hat ne Eigenschaft Font... und das bezieht sich ja dann auf das Ganze.
Über Canvas komm ich auch nicht ran... ist das selbe Problem.

Trotzdem Danke

Ps
hab Delphi 5 Enterprise ;)

Das geht... :-D

Hier habe ich mal auf die ganz schnelle etwas probiert:
Delphi-Quellcode:
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
  rTmp: TRect;
begin
  inherited;
  if Assigned(Node) and (Node.StateIndex = 1) then
  begin
    rTmp := Node.DisplayRect(True);
    Sender.Canvas.MoveTo(rTmp.Left, (rTmp.Top + (rTmp.Bottom - rTmp.Top)) div 2);
    Sender.Canvas.LineTo(rTmp.Right, (rTmp.Top + (rTmp.Bottom - rTmp.Top)) div 2);
  end;
end;
Setz dir mal einen TreeView auf ein Form und trag ein paar Knoten ein. Einigen gibst du den StateIndex 1. Dann fügst du die oben gezeigten Zeilen ein.

Du kannst die Canvas Eigenschaft des TreeView verwenden.
Da ich jetzt nicht weiss, ob ich den Hilfeartikel hier posten darf, schicke ich ihn dir mal nur als PM. (Ich hoffe das geht für die anderen in Ordnung, denn ich weiss man soll alles hier ins Forum schreiben).

mfg Leonard

P.S. ich sehe gerade, die Berechnung für die Y Werte bei MoveTo und LineTo passen nicht so richtig, aber es musste eben schnell gehen :zwinker:

Schaedel 22. Aug 2006 15:40

Re: Treeview einzelnes Treenode durchstreichen?
 
Es funktioniert.... ja ...
Ist nur Affen langsam.... ;) Da doch etwas viel Code ausgeführt wird... und er das seeehr oft ausführt.

Sonst ist die Lösung ok ... wenn man nicht gerade viel anzeigen muss ;)

Danke dir


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.

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