Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Node-Struktur in Treeview aktualisieren/Hierarchie erweitern (https://www.delphipraxis.net/131466-node-struktur-treeview-aktualisieren-hierarchie-erweitern.html)

frieder2008 25. Mär 2009 09:51


Node-Struktur in Treeview aktualisieren/Hierarchie erweitern
 
Hallo zusammen,

ich hab schon eine Weile gegoogelt, finde aber nichts passendes zu meinem Problem: Ich habe ein Treeview mit diversen Nodes, Childs und Childchilds.., die variabel erstellt werden. Nun möchte ich für einen bestimmten Arbeitsakt ALLE Knoten und Einträge um eine Stufe in der Hierarchie nach unten setzen, sprich jeweils einen Node davor setzen.

Bsp:

Zuerst:

Code:
- Haus
- Baum
+ Wiese
  - spielen
  - sitzen
  + Picknick
    - schön
    - lecker
    - toll
Dann:

Code:
+ POS1
  - Haus
  - Baum
  + POS1
    + Wiese
      - spielen
      - sitzen
      + POS1
        + Picknick
        - schön
        - lecker
        - toll
Meine Frage: Gibt es eine Procedure / Funktion, mit der man komplette Knoten einfach hierarschisch herabsetzen kann? Wie wenn ich bei einem String string.text:= 'Neuer erster Eintrag' + string.text machte?

Was ich damit vorhabe? - Die erste Treeview-Struktur ist das Ergebnis einer bestimmten Wortartanalyse eines Textes mit Ausgabe EINER bestimmten Wortart. Nun möchte ich im Nachhinein ermöglichen, PARALLEL zu der bisherigen Wortart weitere Wortarten analysieren zu lassen und die jeweiligen Ergebnisse entsprechend auszugeben. Hoffe, das war einigermaßen klar formuliert? :gruebel:

Vielleicht hat jemand eine Idee. Ansonsten müsste ich wohl alles mit Schleifen abarbeiten, aber da fehlt mir mit treeviews noch Erfahrung (nicht mit den Schleifen, sondern mit dem Kopieren, Verschieben usw. von Nodes).

Danke für Eure Mühe und beste Grüße,
frieder

RWarnecke 25. Mär 2009 10:13

Re: Node-Struktur in Treeview aktualisieren/Hierarchie erwei
 
Hallo,

ich würde die neue Node erstellen und dann mit MoveTo die andere Node dahin verschieben.

frieder2008 26. Mär 2009 08:38

Re: Node-Struktur in Treeview aktualisieren/Hierarchie erwei
 
hihi,

sorry, ich muss nochmal nachfragen: ich bekomme es zwar hin, überall einen entsprechenden Zusatzeintrag anzufügen, aber nicht, wie ich jetzt die jeweiligen Ebenen via MoveTo dorthin verschiebe. Konkreter:

Delphi-Quellcode:
var
  knoten: ttreenode;
  i: integer;

if ((radiobutton1.checked) or (radiobutton2.checked)) and (checkbox5.checked) then
  begin
  //In jeden Knoten POS setzen
  tree.Items.Add(nil, 'POS1');
  for i:=0 to tree.items.count-1 do with tree do
    if tree.Items.Item[i].HasChildren then
      begin
      knoten:= tree.Items.Item[i+1];
      tree.Items.Add(knoten, 'POS1');
      end;

  //Bisherige Strukturen nach jeweils POS verschieben
  for i:=0 to tree.items.count-1 do  
    if tree.Items.Item[i].Text<>'POS1' then tree.items.item[i].MoveTo(?!?)
   

  end;
Ich bin mir da gerade vor allem logisch noch unsicher, würde es so versuchen wollen (allein mir fehlt die Technik dazu:)
- Schleife:
- Gehe auf EBENE0 alle Knoten/Items durch und verschiebe sie unter dasjenige POS1, das auf gleicher EBENE0 ist.
- Gehe auf EBENE0+1 alle Knoten/Items durch und verschiebe sie unter dasjenige POS1, das auf gleicher EBENE0+1 ist.
usw.

Schleife ist klar.
Verschieben zumindest in der Theorie auch klar.
Ermittlung von "POS1" via indexOf.
ABER: Wie kann ich prüfen, auf welcher Hierarchieebene ich bin bzw. wie finde ich "POS1" auf der jeweiligen Ebene?!?

Kann mir da jemand auf die Sprünge helfen?

Danke und Gruß,
der frieder

RWarnecke 26. Mär 2009 09:59

Re: Node-Struktur in Treeview aktualisieren/Hierarchie erwei
 
Schaue Dir mal das Beispiel von den Schweizern an. Das sollte Dir weiterhelfen.


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