A user on the Xojo Programming forum asked how they might show folder contents in a PopupMenu. Since a PopupMenu is not hierarchical, that wasn’t really an option. But an alternative would be to show the contents in a hierarchical menu.
Here’s how you can recurse through files and add them to a regular MenuItem:
Private Function CreateFolderMenu(f As FolderItem) as MenuItem Var base As New MenuItem(f.Name, f) For Each child As FolderItem In f.Children If child.IsFolder Then base.AddMenu(CreateFolderMenu(child)) Else Var m As New MenuItem(child.Name, child) base.AddMenu(m) End If Next Return base End Function
You can call it like this:
Var startFolder As FolderItem = SpecialFolder.Documents FolderMenu = CreateFolderMenu(startFolder) // Property FolderMenu As MenuItem
And show the menu like this:
Var selectedFile As MenuItem = FolderMenu.Popup If selectedFile <> Nil Then Label1.Text = FolderItem(selectedFile.Tag).NativePath End If
Another alternative might be to show the folder in a hierarchical ListBox. An example project for that is included with the Xojo download: Examples/Files/FileBrowser