![]() |
Treeview nur den geklickten Node expandieren
Hallo,
ich komm einfach nicht drauf. Die Lösung des Problems scheint so einfach zu sein, daß ich beim Googeln auch nichts dazu finde. Ich hab in einem Treeview Einträge. So in etwa: Adresse 1 (Level 0); - Bestellungen (Level 1) - Artikel (Level 2 .... Adresse 2 (Level 0); - Bestellungen (Level 1) - Artikel (Level 2 Beim Aktivieren der Form soll der erste Eintrag expandiert werden, also der gesamte "erste Teil" aufgeklappt werden. Das bring ich noch hin mit tv.Items.Item[0].Expand(true); Beim Klick oder besser beim Fokusieren auf einen anderen Eintrag, soll der vorige Eintrag zugeklappt werden und der fokusierte oder geklickte Eintrag expandiert werden. Beim OnClick hab ich folgendes probiert: TV.Items.Item[TV.Tag].Collapse(true); TV.Selected.Expand(true); TV.Tag:=TV.Selected.Index; Im Tag steht auch der richtige Index nur, der vorherige Eintrag wird damit einfach nicht zugeklappt. Könnt ihr mir sagen, wie man sowas richtig macht. Danke. Josef |
AW: Treeview nur den geklickten Node expandieren
Hi,
dann klappe doch nach dem Klick erst mal deinen Tree komplett zu (DeinTree.FullCollapse...glaube ich...) und öffnest ihn wieder ab der erneut geklickten Node. Vielleicht reicht das ja schon für den gewünschten Effekt. Gruß Steku |
AW: Treeview nur den geklickten Node expandieren
Zitat:
Delphi-Quellcode:
property AutoExpand: Boolean;
Description Set AutoExpand to True to cause the selected item to expand and the unselected items to collapse. |
AW: Treeview nur den geklickten Node expandieren
Hi,
danke für die schnelle Antwort. So ähnlich hatte ich es auch schon. allerdings mit einer for-Schleife. Aus Auf- und Zuklappen funktioniert mit fullcollapse. Jetzt kann ich den Fokus aber nicht mehr auf die Level 1 und Level 2 setzen. Es werden beim Klick ja immer die Programmzeilen zum Auf- und Zuklappen abgearbeitet. Der Fokus steht dann am Ende auf dem Level 0. Wie gesagt, ich bring's einfach nicht richtig hin. Vielleicht hast du ja noch einen Tipp, wie ich den Fokus auf die "Untereinträge" bringe. danke. Josef |
AW: Treeview nur den geklickten Node expandieren
Hallo,
[QUOTE=shmia;1190416] Zitat:
Delphi-Quellcode:
Hmmh.... naja. Es wird damit halt beim Klick nicht alles aufgeklappt.
property AutoExpand: Boolean;
Es kommt nur Level 1, Level 2 bleibt zu. Weißt du vielleicht auch noch, wie ich alles aufgeklappt bekomme? Wie geschrieben folgender Aufbau: Adresse (Level 0) |-> Bestellungen (Level 1) |-> Artikel 1 (Level 2) <----- das bleibt zu. |-> Artikel 2 (Level 2) <----- das bleibt zu. usw. Danke Josef |
AW: Treeview nur den geklickten Node expandieren
Guten Abend,
vielleicht kommst du so ein bisschen weiter, oder kannst es noch etwas ausbauen...Im OnClick deines TreeViews mal etwas in diese Richtung probieren (Ungetestet)... Gruß Steku
Delphi-Quellcode:
procedure DeineForm.DeinTreeViewClick(Sender: TObject);
var KlickedNode, StartNode, ParentNode: TTreeNode; begin StartNode := nil; KlickedNode := nil; ParentNode := nil; StartNode := DeinTreeView.Items.GetFirstNode; KlickedNode := DeinTreeView.Selected; ParentNode := KlickedNode.GetPrev; if (KlickedNode.Level = 1) then begin while StartNode <> nil do begin if StartNode.Level = 0 then begin StartNode.Collapse(False); end; StartNode := StartNode.GetNext; end; ParentNode.Expand(True); end; end; |
AW: Treeview nur den geklickten Node expandieren
Hi,
Danke für den Denkanstoß. So funktioniert es jetzt bei mir einigermaßen:
Delphi-Quellcode:
Es ist immer noch nicht ganz das, was ich will.
procedure .........click(sender:TObject);
var KlickedNode: TTreeNode; begin KlickedNode := nil; KlickedNode := TV.Selected; TV.FullCollapse; //alles wird geschlossen if KlickedNode.level <> NULL then begin KlickedNode.Selected:=true; KlickedNode.Expand(true); end; Damit wird beim Klick auf Level 0 alles aufgeklappt, was darunter steht. Soweit ist es so wie es sein soll. Klickt man dann aber auf einen Eintrag Level 1, dann wird nur dieser geklickte Level 1 Eintrag mit seinen Level 2 Einträgen expandiert. Die anderen Level 1 Einträge werden collapsed. Aber was soll's. Ich denk, ich laß es so. danke nochmal. Ciao Josef |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz