Benutzer mit den meisten Antworten
TreeView Sortierung

Frage
-
Hallo Ich habe ein TreeView welches wie folgt mit einer Dateistrucktur gefüllt wird
.......
For Each folder1 In fs.GetFolder(path).SubFolders
nextname = path & "\" & folder1.Name
If IsNumeric(folder1.Name) And Len(folder1.Name) = 1 Then ZwischenNull = "0" Else ZwischenNull = ""
If IsNumeric(folder1.Name) Then tv.Nodes.Add path, tvwChild, nextname, ZwischenNull & folder1.Name
Call addtotree(path & "\" & ZwischenNull & folder1.Name, tv)
Next
......Die Ordner sind Jahreszhlen 2009 2010 2011 .....
in den unterordner habe ich als Ordner den Monatsordner 1 2 3 ....9 10 11 12
ist leider so angelegt und auch nicht änderbar
Die sortierung im TreeView ist nun, klar wie soll es auch sein, 1 - 11 - 12 - 2 .......
wie man sieht habe ich oben schon eine 0 vor meinen Ordner mit Len(1) gebracht nur Interressiert das die Sortierung des TreeViews nicht
kann mir da jemand helfen
Antworten
-
Hallo MCDPone,
Deine Methode – einen “0” vor des Monat-Elements zu setzen – soll eigentlich die Sortieung richtig machen. Es ist nur so, dass du die Sortierung fuer die Unterelemente der Jahrenelemente nicht angeschaltet hast. Es gibt beim TreeView Steuerelement zwei unterschiedliche Sortierungen:
1. TreeView.Sorted = True – das macht die Sortierung nur fuer die Elemente der ersten Stufe des TreeViews (rot markiert). Das wirkt fuer 2009, 2010, 2011 aber wirkt nicht fuer 3,2,1,4,5
2009
-- 3
-- 2
-- 1
-- 4
-- 5
2010
-- 3
-- 2
-- 1
-- 4
-- 5
2011
-- 3
-- 2
-- 1
-- 4
-- 5
2. Node.Sorted = True – das macht die Sortierung fuer alle Unterelemente des Nodes (gruen markiert). Nehmen wir an, ich habe fuer 2009 Node die Sortierung angeschaltet:
2009
-- 1
-- 2
-- 3
-- 4
-- 5
2010
-- 3
-- 2
-- 1
-- 4
-- 5
2011
-- 3
-- 2
-- 1
-- 4
-- 5
Also muss man explizit die Sortierung fuer die Jahrenelementen anschalten. Hier ist ein Beispiel:
Private Sub Form_Load() Dim n As Node 'diese Einstellung hat keinen Einfluss auf der Sortierung der Unterordner tvw.Sorted = True tvw.Nodes.Add , , "all_years", "Years" Set n = tvw.Nodes.Add("all_years", tvwChild, "y2009", "2009") 'das Parent Node (2009) soll explizit sortiert werden. um die Unterordner sortiert zu bekommen n.Sorted = True tvw.Nodes.Add "y2009", tvwChild, "y20093", "03" tvw.Nodes.Add "y2009", tvwChild, "y20091", "01" tvw.Nodes.Add "y2009", tvwChild, "y20098", "08" tvw.Nodes.Add "y2009", tvwChild, "y20092", "02" tvw.Nodes.Add "y2009", tvwChild, "y20099", "09" tvw.Nodes.Add "y2009", tvwChild, "y200910", "10" tvw.Nodes.Add "y2009", tvwChild, "y20097", "07" tvw.Nodes.Add "y2009", tvwChild, "y200912", "12" tvw.Nodes.Add "y2009", tvwChild, "y20094", "04" tvw.Nodes.Add "y2009", tvwChild, "y20095", "05" tvw.Nodes.Add "y2009", tvwChild, "y200911", "11" tvw.Nodes.Add "y2009", tvwChild, "y20096", "06" End Sub
Gruesse,
Bogdan
- Als Antwort markiert Gunter Avenius Freitag, 1. Juli 2011 17:01
Alle Antworten
-
Ohne es jetzt zu testen, aber wenn die Eigenschaft Sorted auf False steht, sortiert der TreeView nicht, wenn wir über den ActiveX Microsoft TreeView sprechen. Die Anzeigereihenfolge entspricht der Einfügereihenfolge.
Microsoft MVP Office Access
https://mvp.support.microsoft.com/profile/Stefan.Hoffmann -
Hallo MCDPone,
Deine Methode – einen “0” vor des Monat-Elements zu setzen – soll eigentlich die Sortieung richtig machen. Es ist nur so, dass du die Sortierung fuer die Unterelemente der Jahrenelemente nicht angeschaltet hast. Es gibt beim TreeView Steuerelement zwei unterschiedliche Sortierungen:
1. TreeView.Sorted = True – das macht die Sortierung nur fuer die Elemente der ersten Stufe des TreeViews (rot markiert). Das wirkt fuer 2009, 2010, 2011 aber wirkt nicht fuer 3,2,1,4,5
2009
-- 3
-- 2
-- 1
-- 4
-- 5
2010
-- 3
-- 2
-- 1
-- 4
-- 5
2011
-- 3
-- 2
-- 1
-- 4
-- 5
2. Node.Sorted = True – das macht die Sortierung fuer alle Unterelemente des Nodes (gruen markiert). Nehmen wir an, ich habe fuer 2009 Node die Sortierung angeschaltet:
2009
-- 1
-- 2
-- 3
-- 4
-- 5
2010
-- 3
-- 2
-- 1
-- 4
-- 5
2011
-- 3
-- 2
-- 1
-- 4
-- 5
Also muss man explizit die Sortierung fuer die Jahrenelementen anschalten. Hier ist ein Beispiel:
Private Sub Form_Load() Dim n As Node 'diese Einstellung hat keinen Einfluss auf der Sortierung der Unterordner tvw.Sorted = True tvw.Nodes.Add , , "all_years", "Years" Set n = tvw.Nodes.Add("all_years", tvwChild, "y2009", "2009") 'das Parent Node (2009) soll explizit sortiert werden. um die Unterordner sortiert zu bekommen n.Sorted = True tvw.Nodes.Add "y2009", tvwChild, "y20093", "03" tvw.Nodes.Add "y2009", tvwChild, "y20091", "01" tvw.Nodes.Add "y2009", tvwChild, "y20098", "08" tvw.Nodes.Add "y2009", tvwChild, "y20092", "02" tvw.Nodes.Add "y2009", tvwChild, "y20099", "09" tvw.Nodes.Add "y2009", tvwChild, "y200910", "10" tvw.Nodes.Add "y2009", tvwChild, "y20097", "07" tvw.Nodes.Add "y2009", tvwChild, "y200912", "12" tvw.Nodes.Add "y2009", tvwChild, "y20094", "04" tvw.Nodes.Add "y2009", tvwChild, "y20095", "05" tvw.Nodes.Add "y2009", tvwChild, "y200911", "11" tvw.Nodes.Add "y2009", tvwChild, "y20096", "06" End Sub
Gruesse,
Bogdan
- Als Antwort markiert Gunter Avenius Freitag, 1. Juli 2011 17:01