# Treeview für Termine



## ITiger (31. Oktober 2002)

Hallo !

Folgendes: Ich möchte gerne Treeview für eine etwas andere Funktion als die Standardmässig vorgesehene verwenden... 

Ich möchte zum Beispiel alle Wochentage untereinander haben und darunter wiederum Termine...

Weiss jemand wie das geht?

Merci. ITiger.


----------



## ITiger (31. Oktober 2002)

Ok, habs hinbekommen...

Brauche jetzt aber noch eine Lösung, wie ich die Nodes unterhalb der Wochentage sortieren kann...

Hier folgt der Code... das Ding dient dem Auslesen einer Crontab:


```
Dim nodX As Node
        Dim zeile As String
        Dim sar_zeilen() As String
        Dim counter As Integer
        Dim zeit_und_name As String
        
        Set nodX = TreeView1.Nodes.Add(, , "R", "Zeitplan")
        Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C1", "Montag")
        Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C2", "Dienstag")
        Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C3", "Mittwoch")
        Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C4", "Donnerstag")
        Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C5", "Freitag")
        Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C6", "Samstag ")
        Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C7", "Sonntag")
        
        Open "d:\program Files\vcron\crontab" For Input As #1
        
        counter = 1
            Do Until EOF(1)
                
                Line Input #1, zeile
                If (Mid(zeile, 1, 1) <> "#") And zeile <> "" Then
                    
                    sar_zeilen() = Split(zeile, " ")

                    zeile = sar_zeilen(4)
                    counter = counter + 1
                    zeit_und_name = (sar_zeilen(1) & ":" & sar_zeilen(0) & " Uhr, " & sar_zeilen(5))

                    If InStr(1, zeile, "0", 1) Then
                            Set nodX = TreeView1.Nodes.Add("C7", tvwChild, "c7_" & counter, zeit_und_name)
                    End If
                    If InStr(1, zeile, "1", 1) Then
                            Set nodX = TreeView1.Nodes.Add("C1", tvwChild, "c1_" & counter, zeit_und_name)
                    End If
                    If InStr(1, zeile, "2", 1) Then
                            Set nodX = TreeView1.Nodes.Add("C2", tvwChild, "c2_" & counter, zeit_und_name)
                    End If
                    If InStr(1, zeile, "3", 1) Then
                            Set nodX = TreeView1.Nodes.Add("C3", tvwChild, "c3_" & counter, zeit_und_name)
                    End If
                    If InStr(1, zeile, "4", 1) Then
                            Set nodX = TreeView1.Nodes.Add("C4", tvwChild, "c4_" & counter, zeit_und_name)
                    End If
                    If InStr(1, zeile, "5", 1) Then
                            Set nodX = TreeView1.Nodes.Add("C5", tvwChild, "c5_" & counter, zeit_und_name)
                    End If
                    If InStr(1, zeile, "6", 1) Then
                            Set nodX = TreeView1.Nodes.Add("C6", tvwChild, "c6_" & counter, zeit_und_name)
                    End If
                    
                    If sar_zeilen(3) = "*" Then
                        If sar_zeilen(2) = "*" Then
                            If zeile = "*" Then
                                
                                Set nodX = TreeView1.Nodes.Add("C6", tvwChild, "c6_" & counter, zeit_und_name)
                                Set nodX = TreeView1.Nodes.Add("C5", tvwChild, "c5_" & counter, zeit_und_name)
                                Set nodX = TreeView1.Nodes.Add("C4", tvwChild, "c4_" & counter, zeit_und_name)
                                Set nodX = TreeView1.Nodes.Add("C3", tvwChild, "c3_" & counter, zeit_und_name)
                                Set nodX = TreeView1.Nodes.Add("C2", tvwChild, "c2_" & counter, zeit_und_name)
                                Set nodX = TreeView1.Nodes.Add("C1", tvwChild, "c1_" & counter, zeit_und_name)
                                Set nodX = TreeView1.Nodes.Add("C7", tvwChild, "c7_" & counter, zeit_und_name)
                        
                            End If
                        End If
                    End If
                    
                End If
            
            Loop
        
        Close #1
        
        TreeView1.Sorted = True
        
End Sub
```


----------



## Dario Linsky (31. Oktober 2002)

was sagt denn der debugger dazu und an welcher stelle in dem code kommst du nicht weiter? ich kann da nicht so viel zu sagen, weil ich nicht weiss, welche werte in deinen variablen stehen können.
wäre vielleicht ganz praktisch, wenn du den aufbau deiner datei auch noch posten könntest.


----------



## ITiger (31. Oktober 2002)

Hab die Lösung bereits...

Sorry, dass ich nicht früher geschrieben habe, aber ich musste bei der Happy Hour meiner Abteilung aufbauen helfen... Mann, ich hab fast 3 Stunden damit verschwendet...

Es gibt ein Attribut das muss man auf true setzen:


```
TreeView1.Nodes("C1").Sorted = True
```

Das Sourcefile ist (wie ich schon erwähnt hab) eine ganz normale crontab wie aus UNIX bekannt (Ist ein "Service" der ein Programm, bzw. ein Batchfile zu einem bestimmten Zeitpunkt auslöst...), Aufbau:

Eine Leere Zeile oder eine Kommentarzeile ("#" am Anfang) soll nicht eingelesen werden, daher die erste IF-Abfrage...

x1 x2 x3 x4 x5 Pfad/Dateiname

x1 = Minuten
x2 = Stunde
x3 = Tag des Monats
x4 = Monat
x5 = Wochentag (0=Sonntag; mehrfachnennung möglich: 1,3,5 = Montag, Mittwoch, Donnerstag)
Pfad/Dateiname = Beispiel: C:\mache_dies.bat

Danke mal, ich meld mich wieder...  
...Mit Sicherheit, denn hier bekommt man echt gut Hilfe!

Gruss Matze.


----------



## ITiger (1. November 2002)

*nächste Frage*

Jo, ich möchte jetzt ein Element aus der Liste auswählen und einen Doppelklick drauf machen (dann dazu Informationen anzeigen...)

Wie geht das? HitTest Methode? Wie wird die verwendet?

Gruss ITiger...


----------



## Dario Linsky (1. November 2002)

beispielsweise mit dem dblclick-ereignis der treeview. das könntest du beispielsweise so aufbauen:

```
Private Sub TreeView_DblClick()
Label1.Caption = TreeView1.Nodes(TreeView1.SelectedItem.Index).Text
End Sub
```
ist natürlich nur ein kleiner denkanstoss, aber so würde ich das machen.

die hittest-methode liefert soweit ich weiss nur den knoten an einer bestimmten koordinate. das wäre unter anderem im mousedown-ereignis hilfreich. aber im dblclick kommst du auch ohne aus.


----------



## ITiger (1. November 2002)

hehehhh...

Hatte es gelöst, kam hierher zurück und stelle fest das meine Lösung schon gepostet wurde ;-).

habs ebenfalls mit selecteditem und treeview_dblclick() gelöst...

Nadenne. Bis demnächst.

ITiger.


----------

