Ukládá vaše aplikace cokoliv na disk a uživatel si umístění vybírá? Pak se vám určitě bude hodit tato malá vychytávka. Ukážeme si, jak vytvořit stromovou strukturu složek na disku.
Ze všeho nejdříve si musíme k projektu připojit knihovnu pro práci se soubory. To uděláme velice jednoduše: Project → References → Microsoft Scripting Runtime.
Dále budeme potřebovat samotný TreeView: Project → Components → Microsoft Windows Common Controls 6.0 SP4. Nyní z Toolboxu vybereme TreeView a umístíme na formulář. Ve vlastnostech nastavíme LineStyle = 1, Style = 6.
Do události formuláře Form_Load() vložíme kód, který nám při načtení formuláře zobrazí kořenovou složku C:/. Tím, že načteme i její podsložky, se nám u C:/ objeví znaménko „+“ pro rozevírání:
Private Sub Form_Load()
Dim fso As New FileSystemObject, slozka As Folder, PodSlozky As Folders, objekt As Variant
Set slozka = fso.GetFolder("C:/") "proměnná se nastaví na kořenovou složku
Set PodSlozky = slozka.SubFolders "získáme kolekci podsložek kořenové složky
TreeView1.Nodes.Add , , slozka.Path, slozka.Path "zobrazí kořenovou složku
For Each objekt In PodSlozky "procházím kolekci podsložek
With TreeView1
.Nodes.Add slozka.Path, tvwChild, objekt.Path, objekt.Name "načteme podsložky kořenové složky, ty se ale zobrazí až pro rozevření
End With
Next objekt
Form1.Show
End Sub
A nyní potřebujeme při každém kliknutí na znaménko „+“ načíst podsložky těch složek, které se nám právě zobrazí, aby se i u nich zobrazilo znaménko plus:
Private Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node)
Dim fso As New FileSystemObject, slozka As Folder, PodSlozky As Folders, objekt As Variant, objekt2 As Variant
On Error Resume Next
Set slozka = fso.GetFolder(Node.FullPath) "nastavíme na složku, na kterou jsme klikli
Set PodSlozky = slozka.SubFolders "získáme kolekci podsložek složky
For Each objekt In PodSlozky "procházíme kolekci podsložek
If objekt.Name <> "System Volume Information" Then ‘systém nás nemá rád
For Each objekt2 In objekt.SubFolders "procházíme kolekci podsložek podsložek složky
With TreeView1
.Nodes.Add objekt.Path, tvwChild, objekt2.Path, objekt2.Name "načteme tyto složky
End With
Next objekt2
End If
Next objekt
End Sub
Nyní stačí pouze nadeklarovat globální proměnnou v sekci Declarations:
Dim oznaceno as string
Poté na formulář vložte tlačítko a do události Command1_Click() vložte jednoduchý kód.>
oznaceno = TreeView1.SelectedItem.FullPath & "\"
Tímto se vám cesta uloží do proměnné.
Kód počítá pouze s kořenovou složkou C:, lze ho ale snadno upravit i na další disky.
Výsledek by mohl vypadat i nějak takto:
Doufám, že vám tato maličkost bude užitečná.