AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Virtual Treeview: Erzeugung der Baumstruktur
Thema durchsuchen
Ansicht
Themen-Optionen

Virtual Treeview: Erzeugung der Baumstruktur

Ein Thema von DGL-luke · begonnen am 10. Feb 2007 · letzter Beitrag vom 11. Feb 2007
Antwort Antwort
Benutzerbild von DGL-luke
DGL-luke

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

Virtual Treeview: Erzeugung der Baumstruktur

  Alt 10. Feb 2007, 13:48
Hallo,

ich dachte, wenn ich OnInitNode und OnInitChildren anständig verarbeite und einmal(!) VST.AddChild(nil) aufrufe, sollte der rest von alleine gehen...

tut es aber nicht.

Wie macht man das?
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
bigg
(Gast)

n/a Beiträge
 
#2

Re: Virtual Treeview: Erzeugung der Baumstruktur

  Alt 10. Feb 2007, 14:02
Du musst der VST mittteilen, wieviel Speicher pro Knoten reserviert werden soll.
  Mit Zitat antworten Zitat
C.Schoch

Registriert seit: 2. Jan 2006
Ort: Wüstenrot
235 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Virtual Treeview: Erzeugung der Baumstruktur

  Alt 10. Feb 2007, 16:28
Hi,
Um dem VST die Datengröße deines Records mitzuteilen gibt es zwei Möglichkeiten,
1. Im OnCreate der Form, VST.NodeDataSize := SizeOf({DatenRecord});
2. Im OnGetNodeDataSize.

Mit der zweiten Variante ist es auch möglich verschiedengroße Records zu haben.

Mal ein Bsp. wie man eine Baumstruktur erzeugt
Delphi-Quellcode:
var
  Data : PTreeData;
  Node : PVirtualNode;
begin
// "Data" mit Daten füllen
Node := VST.AddChild(nil, Data); // Node Ebene 0 (Wurzel)
// "Data" mit anderen Daten füllen
VST.AddChild(Node, Data); // neuer SubNode Ebene 1 (Stamm)
// "Data" mit anderen Daten füllen
Node := VST.AddChild(Node, Data); // neuer SubNode Ebene 1 (Stamm)
// "Data" mit anderen Daten füllen
VST.AddChild(Node, Data); // neuer SubNode Ebene 2 (Ast)
//usw...
end;
In Data liegen die Daten die ein Node enthällt

Edit: Ich hatte da mal was grob zusammengezimmert sind ein par Fehler drin zeigt dir vieleicht aber wies geht
Angehängte Dateien
Dateityp: rar vtbeispiel_141.rar (43,5 KB, 20x aufgerufen)
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  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: Virtual Treeview: Erzeugung der Baumstruktur

  Alt 10. Feb 2007, 17:25
Hmm.... die datasize hab ich zugewiesen...

@C.Schoch: Das mit dem AddChild ist doch die nicht empfohlene Methode, oder? Ich dachte, es reicht, nur OnInitNode und OnInitChildren zu implementieren.

Ich will nicht noch mehr schrieben, mein Code ist kompliziert genug

EDIT: danke, eine zeile fehlte:

InitialStates := InitialStates + [ivsHasChildren]; Jetzt krieg ich zwar n listenerror, aber egal. endlich gehts weiter
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
C.Schoch

Registriert seit: 2. Jan 2006
Ort: Wüstenrot
235 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Virtual Treeview: Erzeugung der Baumstruktur

  Alt 11. Feb 2007, 14:53
Hi,

In der Hilfe steht dazu:
Zitat:
Q: How to add a node to the tree?

A: The technique is very similar to the one you used with the standard tree view. The only difference is that you fill the node's data after the insertion of the node

E:

var
Node: PVirtualNode;
Node := VirtualStringTree1.AddChild(nil); // Adds a node to the root of the Tree.
Node := VirtualStringTree1.AddChild(ParentNode); // Adds a node as the last child of the given node.
Node := VirtualStringTree1.InsertNode(Node, amInsertBefore); // Inserts a node as sibling just before the given node.


Alternatively you can use the OnInitChildren event. This event is used when a node is marked as having child nodes and these child nodes are somehow about to be accessed (like iteration, expanding, display etc.).
Scheint egal zu sein was man nutzt, und ich ändere da nichts mehr es war ein harter Kampf bis es so lief.
Da hast du recht, Das Virtual Tree ist doch recht kompliziert aber der Funktionsumfang dieser Komponente macht dies wieder wett.
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  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
 
#6

Re: Virtual Treeview: Erzeugung der Baumstruktur

  Alt 11. Feb 2007, 15:05
Jop,

bei mir klappts jetzt, indem ich die RootNodes direkt erzeuge und den Rest über OnInitChildren.

(naja, klappen ist zu viel gesagt)
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
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 00:01 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