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/)
-   -   TreeView: TreeNode am Text erkennen (https://www.delphipraxis.net/95372-treeview-treenode-am-text-erkennen.html)

Ironmaster 5. Jul 2007 19:49


TreeView: TreeNode am Text erkennen
 
hallo

gibt es eine Funktion, um in einem TreeView nach dem Text einer TreeNode zu suchen?

z.B.

Delphi-Quellcode:
TreeView1.FindNode('hallo');

bitsetter 5. Jul 2007 20:02

Re: TreeView: TreeNode am Text erkennen
 
Hi,

geht es nicht so in etwa?
Delphi-Quellcode:
var
  loop: integer;
begin
  for loop:= 0 to Pred(Tv.Items.Count) do
   if Pos('hallo', tv.Items.Item[loop].Text) > 0 then
  ...

Ironmaster 10. Jul 2007 16:33

Re: TreeView: TreeNode am Text erkennen
 
Erkennt er so auch die SubNodes der TreeView?
Ich glaube nicht...

DGL-luke 10. Jul 2007 16:59

Re: TreeView: TreeNode am Text erkennen
 
da musst du rekursieren.

Delphi-Quellcode:
function getNodesWString(Node: TVirtualTreeNode; Text: string): TList;
var i: Integer;
l: TList;
begin
  Result := TList.Create;

  for i := 0 to Node.ChildNodes.Count-1 do
  begin
    if Pos(Node.ChildNodes[i].GetText, Text) > 0 then
      Result.Add(Node.ChildNodes[i]);

    l := getNodeswstring(Node.Childnodes[i],Text);
    Result.assign(l, laCopy);
    l.Free;    
   
  end;
end;
So in etwa.

bitsetter 10. Jul 2007 22:11

Re: TreeView: TreeNode am Text erkennen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Ironmaster
Erkennt er so auch die SubNodes der TreeView?
Ich glaube nicht...

Ich glaube schon, mit diesem Code habe ich alle TTreeNode in einer Listbox auflisten lassen:
Delphi-Quellcode:
var
  loop: integer;
begin
  for loop:= 0 to Pred(Tv.Items.Count) do
    Listbox1.Items.Add(Tv.Items.Item[loop].Text);

HalloDu 10. Jul 2007 22:47

Re: TreeView: TreeNode am Text erkennen
 
Ich habe mich gerade ausgiebig mit Baumdarstellungen beschäftigt und glaub mir,wie mein Vorredner schon gesagt hat geht das nur mit Rekursion. Wenn du nicht weiß was das ist, Google hilft bestimmt gerne und sagt dir das.

Aber um es kurz anzureisen: Rekursion bedeutet, das sich eine Methode sich selbst wieder aufruft bis das Ziel erreicht ist. Das ist bei Baumdarstellungen besonders effizient und nützlich.

[edit] Wieder zu schnell getippt und zu viele Rechtschreibfehler :mrgreen: [/edit]

Matze 11. Jul 2007 06:10

Re: TreeView: TreeNode am Text erkennen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo HalluDu

Zitat:

Zitat von HalloDu
Ich habe mich gerade ausgiebig mit Baumdarstellungen beschäftigt und glaub mir,wie mein Vorredner schon gesagt hat geht das nur mit Rekursion.

Ich kann mir nicht vorstellen, dass du dich in diesem Fall ausgiebig damit beschäftigt hast, denn es geht hier wirklich auch ohne Rekursion und das schneller als mit. Items.Count gibt die Anzahl aller Items zurück, nicht nur die der ersten Ebene. Man kann somit wunderbar durch-iterieren und mittels Items[i] auf alle Items zugreifen. Ich habe im Anhang auch einen weiteren Screenshot und das Programm, vielleicht glaubst du's dann.

Zitat:

Zitat von HalloDu
Wenn du nicht weiß was das ist, Google hilft bestimmt gerne und sagt dir das.

Aber um es kurz anzureisen: Rekursion bedeutet, das sich eine Methode sich selbst wieder aufruft bis das Ziel erreicht ist. Das ist bei Baumdarstellungen besonders effizient und nützlich.

Ich denke, was Rekursion ist, wissen die meisten und für einige Baumdarstellungen ist dies auch zwingend erforderlich (Bsp: Binärbäume), doch bei einem TreeView eben nicht. Dies ist auch kein Baum in dem Sinne.

Der Code zum Programm, dessen Screenshot sich im Anhang befindet:

Delphi-Quellcode:
var
  Item: TListItem;
  i: Integer;
begin
  ListView1.Clear;

  for i := 0 to Pred(TreeView1.Items.Count) do
  begin
    Item := ListView1.Items.Add;
    Item.Caption := IntToStr(i);
    Item.SubItems.Add(TreeView1.Items[i].Text);
  end;
end;

HalloDu 11. Jul 2007 09:23

Re: TreeView: TreeNode am Text erkennen
 
Ja schon aber leider nicht in Delphi, sondern mit Access und VBA und da ich für Access 2002 nicht die Developer Edition hatte musste ich mir mit einer Listbox einen selber basteln und da war halt viel Rekursion im Spiel. Ehm, das beim TreeView eine Auflistung aller Nodes gibt wusste ich nicht :oops:, da ich bisher noch nicht so oft damit gearbeitet habe.

Achja und das mit "weißt dus nicht" war eigentlich nur als freundlicher Rat gemeint und nicht als Angriff, ist aber wahrscheinlich ungünstig rüber gekommen


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