Hi Robert.
Darf ich ehrlich sein? So ganz habe ich immer noch nicht kapiert, was du eigentlich machen willst. Aber wir können ja versuchen, das anhand eines Beispiels zu klären. Also, mein TreeView ("tv1" genannt, weil ich zu lange Kompo-Namen im Code hasse

) sieht so aus:
Quelltext
1: 2: 3: 4: 5: 6:
| [ ] Erster Eintrag [-] Zweiter Eintrag [ ] Ein Unterknoten in Punkt 2 [-] Dritter Eintrag [-] Ein Unterknoten in Punkt 3 [ ] Ein Unterunterknoten |
Bis hier kein Problem. Folgende Funktion "Button1.OnClick" zeigt dir alle Knoten, die sich im
Hauptverzeichnis des Baums befinden:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin with tv1,Items do for i := 0 to Count - 1 do if(Item[i].Level = 0) then // <-- mal auskommentieren! ShowMessage(Item[i].Text); end; |
Kommentier nach dem Test einfach mal die von mir markierte Zeile aus, und probier´s erneut. Es ist also so, dass du ohne die Level-Prüfung durch den
kompletten Baum gehst.
Die nächste Prozedur (Button2.OnClick) zeigt dir den allerersten und den allerletzten Knotennamen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button2Click(Sender: TObject); begin with tv1 do begin ShowMessage(Items[0].Text); ShowMessage(Items[Items.Count-1].Text); end; end; |
Und wenn du mal die Einträge aus meinem TreeView bei dir benutzt, dann wirst du sehen, dass der allerletzte Eintrag nicht zwangsläufig im Hauptverzeichnis sein muss.
Und zu guter Letzt, diese Funktion hier:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.Button3Click(Sender: TObject); var i : integer; begin with tv1,Items do begin // zuerst mal der Reihe nach auswählen for i := 0 to Count - 1 do begin Selected := Item[i]; SetFocus; // <-- damit man´s auch sieht! // oder "HideSelection" im Objektinspektor auf // FALSE setzen!!
sleep(150); // <-- damit´s nicht zu schnell geht end;
// jetzt den allerersten Knoten auswählen Selected := Item[0]; end; end; |
wählt sich der Reihe nach durch den Baum und springt am Schluss wieder auf den allerersten Knoten zurück.
So, ich hoffe, das hilft dir weiter.
Gruß,
Mathias.