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 TreeView suche (https://www.delphipraxis.net/21203-treeview-suche.html)

BenjaminHelbig 29. Apr 2004 11:21


TreeView suche
 
Hi DP'ler,

ich habe folgendes Problem. Zur Laufzeit füge ich in ein TreeView neue Nodes ein. Dadurch verändern sich logischerweise die Indexes der vorhandenen Knoten.
Wie kann ich auf eine schnelle art und weise mein TreeView nach einem bestimmten Text durchsuchen.
Mir würde es reichen wenn ich die Nodes auf Level 0 in einer Schleife durchsuche, aber wie stelle ich es an, dass meine Schleife nicht den gesamten Inhalt durchquält?

Grüßle

Ben

Muetze1 29. Apr 2004 11:26

Re: TreeView suche
 
Moin!

Hole dir den ersten Knoten auf der Ebene die du durchsuchen willst in eine Variable node:

Delphi-Quellcode:
  Node := TreeView.Items[0];

  While ( Node <> Nil ) Do
  Begin
    If ( Node.Text = DeinSuchText ) Then
      Break;

    Node := Node.GetNextSibling; // holt den Verwandten auf der gleichen Ebene
  End;

  If ( Assigned(Node) ) Then
    ShowMessage('Knoten gefunden: ' + Node.Text);
Ansonsten hier noch Codeschnipsel um einen TreeView komplett rekursiv zu durchsuchen: klick mich

MfG
Muetze1

Dax 29. Apr 2004 11:27

Re: TreeView suche
 
Delphi-Quellcode:
for i := 1 to TreeView1.Items.Count do
 TreeView1.GetNodeAt(0, i*TreeView1.Font.Size);
Das sollte dir ALLE TopLevel-Nodes vom ersten bis zum letzten zurückgeben. Allerdings ist er nicht getestet...

BluesKid 29. Apr 2004 11:50

Re: TreeView suche
 
procedure SelectNode(const Tx: string; Tree: TTreeView);

kannst du dir ja u.U als Funktion umschreiben die den gefundenen Knoten liefert o.ä.

schönen Gruß

Sam


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