AGB  ·  Datenschutz  ·  Impressum  







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

Treeview nur den geklickten Node expandieren

Ein Thema von josefkoller · begonnen am 8. Nov 2012 · letzter Beitrag vom 8. Nov 2012
Antwort Antwort
josefkoller

Registriert seit: 22. Okt 2012
49 Beiträge
 
#1

Treeview nur den geklickten Node expandieren

  Alt 8. Nov 2012, 18:19
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
  Mit Zitat antworten Zitat
Steku

Registriert seit: 12. Mai 2008
181 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: Treeview nur den geklickten Node expandieren

  Alt 8. Nov 2012, 18:25
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
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

AW: Treeview nur den geklickten Node expandieren

  Alt 8. Nov 2012, 18:38
Die Lösung des Problems scheint so einfach zu sein
property AutoExpand: Boolean;
Description
Set AutoExpand to True to cause the selected item to expand and the unselected items to collapse.
Andreas
  Mit Zitat antworten Zitat
josefkoller

Registriert seit: 22. Okt 2012
49 Beiträge
 
#4

AW: Treeview nur den geklickten Node expandieren

  Alt 8. Nov 2012, 18:52
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
  Mit Zitat antworten Zitat
josefkoller

Registriert seit: 22. Okt 2012
49 Beiträge
 
#5

AW: Treeview nur den geklickten Node expandieren

  Alt 8. Nov 2012, 20:02
Hallo,

[QUOTE=shmia;1190416]
Die Lösung des Problems scheint so einfach zu sein
property AutoExpand: Boolean; Hmmh.... naja. Es wird damit halt beim Klick nicht alles aufgeklappt.

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
  Mit Zitat antworten Zitat
Steku

Registriert seit: 12. Mai 2008
181 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: Treeview nur den geklickten Node expandieren

  Alt 8. Nov 2012, 21:37
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;

Geändert von Steku ( 8. Nov 2012 um 21:58 Uhr)
  Mit Zitat antworten Zitat
josefkoller

Registriert seit: 22. Okt 2012
49 Beiträge
 
#7

AW: Treeview nur den geklickten Node expandieren

  Alt 8. Nov 2012, 23:25
Hi,

Danke für den Denkanstoß.

So funktioniert es jetzt bei mir einigermaßen:

Delphi-Quellcode:
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;
Es ist immer noch nicht ganz das, was ich will.

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
  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 11:27 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