Benutzer-Werkzeuge

Webseiten-Werkzeuge


k17:k17.9:k17.9.2:start

17.9.2 Projekt – Demonstration der Verwendung der Klasse TreeView

?800

Abbildung 17.9.2.1: TreeView mit markiertem Eintrag

An geeigneten Stellen werden in den folgenden Abschnitten Teile des Quelltextes des Projektes 'Bildbetrachter' zur Demonstration der Verwendung der Klasse TreeeView angegeben und kurz kommentiert:

Beim ersten Programm-Start können Sie über den Menü-Eintrag 'Datei > Basis-Verzeichnis auswählen' in einem Dialog ein Verzeichnis auswählen, in dem auch Bilder gespeichert sind. Dieses Basis-Verzeichnis aus der System-Verzeichnisstruktur wird mit all seinen Unter-Verzeichnissen auf eine TreeView abgebildet. Beachten Sie die Rekursion in der Prozedur:

Private Sub DirTree2TreeView(BaseDir As String)  
  Dim sDir, sBaseDir, sPattern As String
  Dim iFilter As Integer
 
  sBaseDir = BaseDir
  sPattern = "*"
  iFilter = gb.Directory
 
  If Exist(sBaseDir) Then
     For Each sDir In Dir(sBaseDir, sPattern, iFilter).Sort(gb.Descent)
       TreeView1.Add(sBaseDir &/ sDir, sDir, Picture["icon:/16/directory"], sBaseDir, Null)  
       DirTree2TreeView(sBaseDir &/ sDir) ' recursive loop
     Next ' Directory
  Endif ' Exist() ?
 
End ' DirToTreeView(...)

Beim Auswählen eines Verzeichnisses in der TreeView mit einem Maus-Klick wird eine Liste (Array) aller Bild-Dateien im ausgewählten Verzeichnis erzeugt:

Public Sub TreeView1_Select()
 
' Bild-Liste für das ausgewählte Verzeichnis in der TreeView erzeugen
  GetImagePaths(TreeView1.Current.Key)
 
  If aImagePaths.Count > 0 Then 
     SetEnabled()
     iPictureIndex = 0
     PictureBoxD.Picture = Picture.Load(aImagePaths[0]) ' Anzeige des 1. Bildes in der Bild-Liste
   ' Einschalten der Bild-Navigation, wenn die Bild-Liste mehr als ein Bild enthält
     If aImagePaths.Count > 1 Then 
        btnNext.Enabled = True
     Else
        btnNext.Enabled = False
     Endif
  Endif
 
End ' TreeView1_Select()

Ein Muster-Filter (sPattern) sorgt dafür, dass nur Bild-Dateien (iFilter = gb.File) mit vorgegebenen Extensionen (→ JPG, JPEG, jpeg, jpg, png, gif,.svg) in die Bild-Liste aufgenommen werden. In der Liste stehen die (absoluten) Bild-Datei-Pfade.

Private Sub GetImagePaths(sDir As String)  
  Dim sFile, sPattern As String
  Dim iFilter As Integer
 
  sPattern = "*{.JPG,.png,.JEPG,.jpeg,.jpg,.gif,.svg}"
  iFilter = gb.File
  aImagePaths = New String[] ' Neue Bild-Liste
  If Exist(sDir) Then
     For Each sFile In Dir(sDir, sPattern, iFilter).Sort(gb.Ascent)
       aImagePaths.Add(sDir &/ sFile)
     Next ' File
  Endif ' Exist() ?
 
End ' GetImagePaths(sDir As String)

Das erste Bild in der Liste wird sofort in einer Picture-Box angezeigt. Anschließend kann man mit den beiden Navigationsbuttons durch die Bild-Liste navigieren. Ist die Bild-Liste leer, so wird ein Default-Bild angezeigt. Die TreeView-Einträge können Sie vollständig auf- und zuklappen, wenn man die beiden Button unter der TreeView nutzt.

Wenn die Anzahl der Einträge in der TreeView mindestens eins ist, wird der interne Zeiger der TreeView auf den ersten Eintrag gesetzt (Zeilen 1 und 2). Dann wird in einer Repeat-Until-Kontroll-Struktur in den Zeilen 4 bis 6 jedes Parent-Element ausgeklappt bis der interne Cursor das untere TreeView-Ende erreicht hat. Dadurch wird der Funktionswert der TreeView-Methode trvTreeView.MoveBelow() aber positiv (!) und somit die Schleife abgebrochen. Analoge Betrachtungen gelten auch für das Einklappen:

[1] Private Sub ExpandAll(trvTreeView As TreeView)
[2]    If trvTreeView <> Null And trvTreeView.Count > 0 Then
[3]       trvTreeView.MoveFirst()
[4]       Repeat
[5]          trvTreeView.Item.Expanded = True ' → ausklappen
[6]       Until trvTreeView.MoveBelow()
[7]    Endif
[8] End ' ExpandAll(...)
[1] Private Sub ContractAll(trvTreeView As TreeView)
[2]    If trvTreeView <> Null And trvTreeView.Count > 0 Then
[3]       trvTreeView.MoveFirst()
[4]       Repeat
[5]          trvTreeView.Item.Expanded = False ' → einklappen
[6]       Until trvTreeView.MoveBelow()
[7]    Endif
[8] End ' ContractAll(...)

Das Ein- und Ausklappen der Einträge in der TreeView ist im Projekt nur zur Demonstration ausgewählter Methoden der TreeView gedacht.

Wird das Programm beendet, dann wird das aktuelle Verzeichnis als Start-Verzeichnis in die Settings-Datei dir.conf eingetragen. Beispiel:

# Start-Directory
[Base]
BasePath="/home/hans/11-Buchprojekt/K17_KomF2/17.9_TreeView/URLAUB"

Die Standard-Sprache für das Projekt ist die englische Sprache. Für das Projekt gibt es eine deutsche Sprach-Datei.

Im Projekt → Kapitel 24.3.4 Manager für EMail-Konten finden Sie ein weiteres Beispiel für den Einsatz einer TreeView als Navigation in einer Baum-Struktur.

Beachten Sie: Das Projekt dient nur zur Demonstration der Verwendung der Klasse TreeView. Es fehlen daher dem Programm 'Bildbetrachter' noch einige Details wie Vorschaubilder oder automatische Erkennung des Bildformates, die Sie für einen Bildbetrachter erwartet hätten.

Download

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k17/k17.9/k17.9.2/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge