AGB  ·  Datenschutz  ·  Impressum  







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

Ttreenodes Objekt erstellen

Ein Thema von Ruffy87 · begonnen am 5. Aug 2006 · letzter Beitrag vom 5. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Ruffy87

Registriert seit: 12. Jan 2006
45 Beiträge
 
Delphi 6 Professional
 
#1

Ttreenodes Objekt erstellen

  Alt 5. Aug 2006, 17:03
hallo,

ich bin an einem Projekt dran in dem ich mehrere Baumknoten zuerst in ein
Ttreenodes Objekt hinzufügen will, sind alle Baumknoten hinzugefügt will ich
Die fertige Baumstruktur in mein TreeView "kopieren".

Ich weiß aber nicht wie ich ein Ttreenodes Objekt erstellen kann oder brauche ich
da ein anderes Objekt???

In der Hilfe steht nur das man mit Ttreenodes.create eine Instanz erstellt.

Mal ein Beispiel an der ListBox:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Liste: TStringList;
begin
  Liste := TStringList.Create;
  Liste.Add('hallo'); //der Listeneintrag ist im Objekt Liste, die ListBox ist noch LEER!!!
  .
  .
  .
  ListBox1.Items := Liste; //erst am Ende werden alle Einträge in die ListBox übernommen!!!
end;
Warum geht das bei der TreeView nicht so leicht wie mit einer Listbox?

Mit freundlichen Grüßen

Stefan
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Ttreenodes Objekt erstellen

  Alt 5. Aug 2006, 17:13
Es geht genau so einfach:

Delphi-Quellcode:
Var
  ATreeNode: TTreeNode;
begin
  // statt nil einen TreeNode ergibt Untereintrag zu TreeNode
  ATreeNode := TreeView.Items.AddChild(nil, 'Caption des TreeNode');
Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Ruffy87

Registriert seit: 12. Jan 2006
45 Beiträge
 
Delphi 6 Professional
 
#3

Re: Ttreenodes Objekt erstellen

  Alt 5. Aug 2006, 17:41
So meinte ich das nicht!

Bei deinem Code erstellst du ja direkt den Baumknoten in der Treeview und bekommst eine Instanz des Baumknotens -> Atreenode.

Es soll aber so ablaufen das du z.B. 200 Baumknoten zuerst mal im Hintergrund (also man sieht es nicht) in einem Objekt erstellt werden. Dann soll der Benutzer mit einem Button OK bestätigen und danach sollen erst die Baumknoten in die Treeview übernohmen werden.
Ich hab jetzt mal in meinem Listbox Beispiel Kommentare eingefügt.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Ttreenodes Objekt erstellen

  Alt 5. Aug 2006, 17:44
Hallo Stefan,

du musst beim Aufruf von TTreeNodes.Create() eine TreeView als Owner angeben, weil z.B. die Methode AddChild() intern die Methode Owner.CreateNode() aufruft um den neuen Knoten zu erzeugen. Aber dein Ziel kannst du auch einfacher erreichen: verwende die Methoden BeginUpdate() und EndUpdate() um den Aufbau der Nodes ungestört von irgendwelchen Events vornehmen zu können.

Grüße vom marabu

@Frank: du hast TreeNode und TreeNodes verwechselt ...
  Mit Zitat antworten Zitat
Ruffy87

Registriert seit: 12. Jan 2006
45 Beiträge
 
Delphi 6 Professional
 
#5

Re: Ttreenodes Objekt erstellen

  Alt 5. Aug 2006, 17:59
TtreeNodes.create() hatte ich schonmal ausprobiert, aber wie gesagt das ist ja dann nur eine Instanz von meiner TreeView.

Die Methoden BeginUpdate() und EndUpdate() kannte ich noch nicht, hilft mir aber nicht weiter da die Baumknoten auf jeden Fall übernommen wird.

Ich hatte vergessen zusagen das der Benutzer auch die Möglichkeit haben soll abzubrechen.

Im ganzen sieht das halt so aus das in der TreeView vielleicht schon ein paar Baumknoten enthalten sind. In einem automatischen Suchlauf wird eine Ordnerstruktur durchsucht, diese Ordnerstruktur soll zuerste mal "temporär" in einem Objekt von TtreeNodes erstellt werden. Ist der Suchlauf fertig kann der Benutzer die Ordnerstruktur in der TreeView übernehmen oder auch mitten im Suchlauf abbrechen. Beim Abbruch wird die "temporäre Ordnerstruktur" verworfen, also KEINE Änderung in der TreeView.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Ttreenodes Objekt erstellen

  Alt 5. Aug 2006, 18:17
Zitat von Ruffy87:
TtreeNodes.create() hatte ich schonmal ausprobiert, aber wie gesagt das ist ja dann nur eine Instanz von meiner TreeView.
Das Ergebnis ist eine Instanz von TTreeNodes und nicht von TTreeView.

Zitat von Ruffy87:
Die Methoden BeginUpdate() und EndUpdate() kannte ich noch nicht, hilft mir aber nicht weiter da die Baumknoten auf jeden Fall übernommen wird. Ich hatte vergessen zusagen das der Benutzer auch die Möglichkeit haben soll abzubrechen.
Spätestens jetzt weißt du um die Bedeutung einer vollständigen und fehlerfreien Problembeschreibung.

Zitat von Ruffy87:
Im ganzen sieht das halt so aus das in der TreeView vielleicht schon ein paar Baumknoten enthalten sind. In einem automatischen Suchlauf wird eine Ordnerstruktur durchsucht, diese Ordnerstruktur soll zuerste mal "temporär" in einem Objekt von TtreeNodes erstellt werden.
Deine Überlegung ist grundsätzlich nicht falsch, aber zwei Dinge stehen dir im Weg: zuerst sind TreeNodes und TreeView per Design miteinander verwoben und dann fehlt dir ja auch ein Operator zum Mischen von hierarchischen Daten. Das letztere kannst du durch Programmieraufwand beheben, das erstere nicht.

Zitat von Ruffy87:
Ist der Suchlauf fertig kann der Benutzer die Ordnerstruktur in der TreeView übernehmen oder auch mitten im Suchlauf abbrechen. Beim Abbruch wird die "temporäre Ordnerstruktur" verworfen, also KEINE Änderung in der TreeView.
Dann empfehle ich dir selbst für die Trennung von Visualisierung und Datenhaltung zu sorgen. Definiere dir eine eigene nicht-visuelle Klasse zur Verwaltung der Knoten, bevor diese dann "ohne Abbruch" in die TreeView aufgenommen werden.

marabu
  Mit Zitat antworten Zitat
Ruffy87

Registriert seit: 12. Jan 2006
45 Beiträge
 
Delphi 6 Professional
 
#7

Re: Ttreenodes Objekt erstellen

  Alt 5. Aug 2006, 19:09
Nun muss ich es wohl direkt in die TreeView übernehmen.
Eine neue nicht-visuelle Klasse zu erstellen ist bestimmt nicht gerade leicht. Also ich wüsste jetzt nicht genau wie das geht.

Noch danke an ALLE für die schnellen Antworten.
  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
 
#8

Re: Ttreenodes Objekt erstellen

  Alt 5. Aug 2006, 19:22
Zitat von Ruffy87:
Eine neue nicht-visuelle Klasse zu erstellen ist bestimmt nicht gerade leicht.


tempTV := TTreeView.Create(nil);
Was is daran schwireig?
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
Ruffy87

Registriert seit: 12. Jan 2006
45 Beiträge
 
Delphi 6 Professional
 
#9

Re: Ttreenodes Objekt erstellen

  Alt 5. Aug 2006, 19:33
Ich bekomme aber bei diesem Code eine Fehlermeldung.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var tempTV: TTreeView;
begin
  tempTV := TTreeView.Create(nil);
  tempTV.Items.AddChild(nil, 'hallo');
end;
Also muss da doch irgendwas nicht stimmmen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Ttreenodes Objekt erstellen

  Alt 5. Aug 2006, 19:47
Borlands Komponente TTreeView kapselt ein MS Common Control, welches intern stark mit Nachrichten arbeitet. Der Owner darf zwar nil sein, aber die property Parent nicht. Um das Control ohne Visualisierung zu benutzen muss man es als message only window betreiben:

Delphi-Quellcode:
var
  tv: TTreeView;
begin
  tv := TTreeView.CreateParented(THandle(-3));
  tv.Items.AddChild(nil, 'hello');
  // ...
end;
marabu
  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 23:59 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