Try this. Highlight one of the folders in the tree, type in what you are searching for in the search box below and press ENTER. Modify the code if you just want to show folders and not search for files. (I made this last night for a friend based on others code)
Code: Select all
; Cute bubble tips
Procedure BubbleTip(bWindow.l, bGadget.l, bText.s)
ToolTipControl = CreateWindowEx_(0, "ToolTips_Class32", "", $D0000000|$40, 0, 0, 0, 0, WindowID(bWindow), 0, GetModuleHandle_(0), 0)
SendMessage_(ToolTipControl, 1044, 0, 0)
SendMessage_(ToolTipControl, 1043, $DFFFFF, 0)
SendMessage_(ToolTipControl, 1048, 0, 180)
Button.TOOLINFO\cbSize = SizeOf(TOOLINFO)
Button\uFlags = $11
Button\hWnd = GadgetID(bGadget)
Button\uId = GadgetID(bGadget)
Button\lpszText = @bText
SendMessage_(ToolTipControl, $0404, 0, Button)
EndProcedure
; Window Constants
Enumeration
#Window_qsearch
EndEnumeration
#WindowIndex = #PB_Compiler_EnumerationValue
; Gadget Constants
Enumeration
#Gadget_qsearch_dirlist
#Gadget_qsearch_filelist
#Gadget_qsearch_searchframe
#Gadget_qsearch_searchbox
#Shortcut_qsearch_enter
#Splitter_qsearch_vertical
EndEnumeration
#GadgetIndex = #PB_Compiler_EnumerationValue
; The main window
Procedure.l Window_qsearch()
If OpenWindow(#Window_qsearch,175,0,747,457,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered|#PB_Window_Invisible,"Qsearchview 0.00")
AddKeyboardShortcut(#Window_qsearch, #PB_Shortcut_Return, #Shortcut_qsearch_enter)
If CreateGadgetList(WindowID(#Window_qsearch))
ExplorerTreeGadget(#Gadget_qsearch_dirlist,10,10,200,385,"")
BubbleTip(#Window_qsearch,#Gadget_qsearch_dirlist,"Highlight a drive or directory where you want the search to start")
ListIconGadget(#Gadget_qsearch_filelist,220,10,515,440,"Location",370,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(#Gadget_qsearch_filelist,1,"Filename",120)
BubbleTip(#Window_qsearch,#Gadget_qsearch_filelist,"This is where the list of files will be returned from the search")
Frame3DGadget(#Gadget_qsearch_searchframe,10,400,728,50,"Search For:")
StringGadget(#Gadget_qsearch_searchbox,20,420,180,20,"")
BubbleTip(#Window_qsearch,#Gadget_qsearch_searchbox,"Type in here what you are looking for and press ENTER when ready. There is no need to use wildcard characters.")
HideWindow(#Window_qsearch,0)
ProcedureReturn WindowID()
EndIf
EndIf
EndProcedure
; Create a list to hold the dirs/files being found
NewList dir.s()
; Main program loop
If Window_qsearch()
; Add the single splitter
SplitterGadget(#Splitter_qsearch_vertical, 10, 10, 726, 386, #Gadget_qsearch_dirlist, #Gadget_qsearch_filelist, #PB_Splitter_Vertical | #PB_Splitter_Separator)
SetGadgetState(#Splitter_qsearch_vertical, 186)
quitqsearch = 0 ; Main window detect value for close
ActivateWindow() ; Set focus to main window
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
If EventWindowID() = #Window_qsearch
quitqsearch = 1
EndIf
Case #PB_Event_Menu
Select EventMenuID()
Case #Shortcut_qsearch_enter : Gosub CheckEnter ; Is ENTER presses, start search
EndSelect
Case #PB_Event_Gadget
Select EventGadgetID()
Case #Gadget_qsearch_dirlist : Gosub TreeClicked ; user clicked on a directory, get dir name
Case #Gadget_qsearch_filelist
Select EventType()
Case #PB_EventType_LeftDoubleClick : Gosub ListClicked ; User clicked on a found file, do something
Case #PB_EventType_RightDoubleClick
Case #PB_EventType_RightClick
Default
EndSelect
EndSelect
EndSelect
Until quitqsearch
CloseWindow(#Window_qsearch)
EndIf
End
;
TreeClicked:
If GetGadgetState(#Gadget_qsearch_dirlist) <> -1
ClearGadgetItemList(#Gadget_qsearch_dirlist)
TreeItem.s = GetGadgetText(#Gadget_qsearch_dirlist)
EndIf
Return
;
ListClicked:
Return
;
CheckEnter:
If TreeItem.s <> ""
FileSpec.s = LCase(GetGadgetText(#Gadget_qsearch_searchbox))
If FileSpec.s <> ""
FocusID = GetFocus_()
Select FocusID
Case GadgetID(#Gadget_qsearch_searchbox)
Gosub SearchFiles
EndSelect
FileSpec.s = ""
SetGadgetText(#Gadget_qsearch_searchbox, "")
EndIf
EndIf
Return
;
SearchFiles:
ClearList(dir.s())
defaultdrive.s = TreeItem.s
If Right(defaultdrive.s, 1) = ""
defaultdrive.s = Left(defaultdrive.s, Len(defaultdrive.s) - 1)
EndIf
AddElement(dir())
dir() = defaultdrive.s
idx = 0
Repeat
SelectElement(dir(), idx)
If ExamineDirectory(0, dir(), "*.*")
path.s = dir() + ""
quit = 0
Repeat
nextfile = NextDirectoryEntry()
filename.s = DirectoryEntryName()
Select nextfile
Case 0
quit = 1
Case 1
count + 1
While WindowEvent() : Wend
If FindString(path.s +filename.s, FileSpec.s, 1)
AddGadgetItem(#Gadget_qsearch_filelist, -1, path.s + Chr(10) + filename.s)
EndIf
Case 2
filename.s = DirectoryEntryName()
If filename.s <> ".." And filename.s <> "."
AddElement(dir())
dir() = path + filename.s
EndIf
EndSelect
Until quit = 1
EndIf
idx + 1
Until idx > CountList(dir())-1
TreeItem.s = ""
Return