
Code: Select all
Dim f$(10)
f$(0)="File 01"
f$(1)="Folder 1\File 11"
f$(2)="Folder 1\File 12"
f$(3)="Folder 1\File 13"
f$(4)="Folder 2\File 21"
f$(5)="Folder 2\File 22"
f$(6)="Folder 2\File 23"
f$(7)="Folder 3\Sub-folder 3\File 331"
f$(8)="Folder 3\Sub-folder 3\File 332"
f$(9)="Folder 3\Sub-folder 3\File 333"
f$(10)="Folder 4\File 41"
;/---------------------------------------------------------------------------------------------------------------------
;|
Procedure FillTreeGadget(Gadget, Array Files.s(1))
Protected fn.s, currdir.s, idx, count, level, cnt
Dim lastdir.s(0)
count = ArraySize(Files())
For idx = 0 To count ;
fn = Files(idx)
cnt = CountString(fn, #PS$)
For level = 0 To cnt - 1
currdir = StringField(fn, level+1, #PS$)
If lastdir(level) <> currdir
AddGadgetItem(0, -1, currdir, 0, level)
lastdir(level) = currdir
ReDim lastdir(level+1)
EndIf
Next level
fn = StringField(fn, level+1, #PS$)
AddGadgetItem(0, -1, fn, 0, level)
Next
Dim lastdir(0)
ProcedureReturn 0
EndProcedure
; ---------------------------------------------------------------------------------------------------------------------
If OpenWindow(0, 0, 0, 355, 200, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TreeGadget(0, 10, 10, 340, 180) ; TreeGadget standard
FillTreeGadget(0, f$())
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf