AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Virtual Treeview - Nodes durch-iterieren - Wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Virtual Treeview - Nodes durch-iterieren - Wie?

Offene Frage von "torud"
Ein Thema von torud · begonnen am 10. Mär 2009 · letzter Beitrag vom 11. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Virtual Treeview - Nodes durch-iterieren - Wie?

  Alt 10. Mär 2009, 07:44
Hallo Wissende,

ich habe eine kleine function, die von einem normalen Treeview auf einen virtual Treeview adaptieren will, finde aber keine Möglichkeit die Schleife so anzupassen, dass ich durch alle Nodes gehen kann und das Level prüfen und vergleichen kann.

Irgendwie ist das völlig anders beim VST. Hier mal das Original, wie es mit einem normalen Trreview funktioniert hat.

Delphi-Quellcode:
function GetItemsOfLevel(int_level_count : integer) : integer;
var
  i : integer;
begin
  Result := 0;
  with form1.tree do
    begin
      for i := 0 to Items.Count-1 do
        begin
          if Items.Item[i].Level = int_level_count then inc(Result);
        end;
    end;
end;
Kann mir bitte jemand einen Tipp geben?
Danke
Tom
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Virtual Treeview - Nodes durch-iterieren - Wie?

  Alt 10. Mär 2009, 07:58
Ich habs jetzt so gemacht, aber ich bin mir nicht sicher, ob das so in Ordnung ist.

Delphi-Quellcode:
function GetItemsOfLevel(int_level_count : integer) : integer;
var
  akt_Node, last_Node: PVirtualNode;
begin
  Result := 0;
  with form2.vst do
    begin
      akt_Node := GetFirst;
      last_Node := GetLast(nil);
      while not(akt_Node = last_Node) do
        begin
          if GetNodeLevel(akt_Node) = int_level_count then inc(Result);
          akt_Node := GetNext(akt_Node);
        end;
    end;
end;
Danke
Tom
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Virtual Treeview - Nodes durch-iterieren - Wie?

  Alt 10. Mär 2009, 08:02
Hallo,

benutze die CallBack-Funktion (hier im Tutorial beschrieben).


Heiko
Heiko
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Virtual Treeview - Nodes durch-iterieren - Wie?

  Alt 10. Mär 2009, 08:25
Hm, danke für die Antwort, aber das was ich fand, war nicht wirklich erschöpfend.

Ich geh mal davon aus, dass Du die CopySubTree-Routine gemeint hast und mir durch die Blume sagen wolltest, dass ich den Spass rekursiv durchlaufen soll...!?
Danke
Tom
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Virtual Treeview - Nodes durch-iterieren - Wie?

  Alt 10. Mär 2009, 08:40
brauchst nicht den lastnode prüfen (den du bei deiner version auch übersehen würdest)

GetNext liefert eh nil zurück, wenn es keinen mehr gibt

Delphi-Quellcode:
function GetItemsOfLevel(int_level_count : integer) : integer;
var
  akt_Node: PVirtualNode;
begin
  Result := 0;
  with form2.vst do
    begin
      akt_Node := GetFirst;
      while assigned(akt_Node) do
        begin
          if GetNodeLevel(akt_Node) = int_level_count then inc(Result);
          akt_Node := GetNext(akt_Node);
        end;
    end;
end;
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#6

Re: Virtual Treeview - Nodes durch-iterieren - Wie?

  Alt 10. Mär 2009, 08:45
Zitat von torud:
Ich geh mal davon aus, dass Du die CopySubTree-Routine gemeint hast und mir durch die Blume sagen wolltest, dass ich den Spass rekursiv durchlaufen soll...!?
IterateSubTree meinte er.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Virtual Treeview - Nodes durch-iterieren - Wie?

  Alt 10. Mär 2009, 08:47
Hallo,

eine CallBack-Funkon wird vom TreeView für alle Nodes durchlaufen.
Da gibt es kein "rekursiv".

die CallBack-Methode

Delphi-Quellcode:
 procedure LV_TPData_SearchCallBack(Sender: TBaseVirtualTree;
      Node: PVirtualNode; Data: Pointer; var bAbort: Boolean);
und der Aufruf (ich suche ab Root, deshalb NIL).
Wird bAbort nicht angetastet, wird jeder Node übergeben.

Delphi-Quellcode:
  SearchTPItem.Id:= theId2Search;
    LV_TPData.IterateSubTree(NIL, LV_TPData_SearchCallBack, SearchTPItem);
SearchTPItem ist mein Data-Pointer (ich weise Objekte, nicht Records zu, aber nur am Rande).
Du du nicht suchst, kannst da das auf NIL setzen.


Heiko
Heiko
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#8

Re: Virtual Treeview - Nodes durch-iterieren - Wie?

  Alt 10. Mär 2009, 09:25
Vielen Dank für Eure Geduld, aber ich quähl mich nun schon fast 2 Wochen mit dem Problem den Treeview inhaltlich um 90° gedreht zu visualisieren. So wie er ist habe ich das ja schon hinbekommen, aber nicht gedreht...

Ich hänge mal ein Bild dessen an, was ich bisher habe...baum.png
Und eins, wie ich es gern hätte, aber ich bekomms einfach nicht, da ich mit Rekursion und CallBacks noch nie so recht klargekommen bin.

Vielleicht habt ihr ja eine Idee? Ich zeig auch gern mal den Code, den ich bisher hatte, wenns sein muss. Ist eh nicht so dolle...
Miniaturansicht angehängter Grafiken
baum_erwuenscht_805.png   baum_133.png  
Danke
Tom
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Virtual Treeview - Nodes durch-iterieren - Wie?

  Alt 10. Mär 2009, 09:54
Hallo,

unwahrscheinlich, dass der VST das kann.
Zeig doch mal, wie es bisher aussieht ?
Oder ist das das 2. Bild ?


Heiko
Heiko
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#10

Re: Virtual Treeview - Nodes durch-iterieren - Wie?

  Alt 10. Mär 2009, 10:14
Eigentlich gilt hier im Forum: Neue Frage = neuer Post!

Bild 1 ist nicht möglich, würde ich selbst malen.
Bild 2 ist möglich über die Paint Ereignisse.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:35 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