AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TreeView: TreeNode am Text erkennen

Ein Thema von Ironmaster · begonnen am 5. Jul 2007 · letzter Beitrag vom 11. Jul 2007
Antwort Antwort
Ironmaster

Registriert seit: 19. Mai 2006
70 Beiträge
 
Delphi 7 Personal
 
#1

TreeView: TreeNode am Text erkennen

  Alt 5. Jul 2007, 20:49
hallo

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

z.B.

TreeView1.FindNode('hallo');
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: TreeView: TreeNode am Text erkennen

  Alt 5. Jul 2007, 21:02
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
  ...
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Ironmaster

Registriert seit: 19. Mai 2006
70 Beiträge
 
Delphi 7 Personal
 
#3

Re: TreeView: TreeNode am Text erkennen

  Alt 10. Jul 2007, 17:33
Erkennt er so auch die SubNodes der TreeView?
Ich glaube nicht...
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: TreeView: TreeNode am Text erkennen

  Alt 10. Jul 2007, 17:59
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.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: TreeView: TreeNode am Text erkennen

  Alt 10. Jul 2007, 23:11
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);
Miniaturansicht angehängter Grafiken
treeview_126.jpg  
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#6

Re: TreeView: TreeNode am Text erkennen

  Alt 10. Jul 2007, 23:47
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 [/edit]
Frederic H.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: TreeView: TreeNode am Text erkennen

  Alt 11. Jul 2007, 07:10
Hallo HalluDu

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 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;
Miniaturansicht angehängter Grafiken
treeview_971.png  
Angehängte Dateien
Dateityp: zip treeview_demo_346.zip (5,2 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#8

Re: TreeView: TreeNode am Text erkennen

  Alt 11. Jul 2007, 10:23
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 , 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
Frederic H.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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