Post by Walt Decker on Feb 20, 2021 12:25:50 GMT -5
This was a lot of fun and a lot of frustration trying to get LB to do what I wanted without having access to the callback function.
Basically it is a "browse for folder" app using two list boxes and some check boxes. The attached zip contains the below code plus the required dlls.
TREEVIEW_SIM.ZIP (234.14 KB)
'/==================================================================================/'
' FN_dir CODES
'/==================================================================================/'
ERR.SUCCESS = -1
ERR.NOT.INITIALIZED = -1000
ERR.NOMORE.ENTRIES = -1001
ERR.PATH.NOT.FOUND = -1002
ERR.NO.PATHS.FOUND = -1003
ERR.BUFFER.TO.SMALL = -1004
ERR.FILE.NOT.FOUND = -1005
ERR.NO.FILES.FOUND = -1006
ERR.IS.FOLDER = -1007
ERR.BAD.PARAMETER = -1008
ERR.BAD.INDEX = -1009
ERR.OP.CANCELLED = -1010
'/==================================================================================/'
' LISTBOX MESSAGE CODES
'/==================================================================================/'
LB.ADDSTRING = HEXDEC("&H0180")
LB.INSERTSTRING = HEXDEC("&H0181")
LB.DELETESTRING = HEXDEC("&H0182")
LB.SETSEL = HEXDEC("&H0185")
LB.SETCURSEL = HEXDEC("&H0186")
LB.SETHORIZONTALEXTENT = HEXDEC("&H0194")
LB.GETSEL = HEXDEC("&H0187")
LB.GETCURSEL = HEXDEC("&H0188")
LB.GETTEXT = HEXDEC("&H0189")
LB.GETTEXTLEN = HEXDEC("&H018A")
LB.GETCOUNT = HEXDEC("&H018B")
LB.SELECTSTRING = HEXDEC("&H018C")
LB.FINDSTRING = HEXDEC("&H018F")
LB.GETSELCOUNT = HEXDEC("&H0190")
LB.GETSELITEMS = HEXDEC("&H0191")
LB.ADDFILE = HEXDEC("&H0196")
LB.FINDSTRINGEXACT = HEXDEC("&H01A2")
'/==================================================================================/'
' LISTBOX STYLES
'/==================================================================================/'
LBS.NOTIFY = HEXDEC("&H0001")
LBS.MULTIPLESEL = HEXDEC("&H0008")
LBS.EXTENDEDSEL = HEXDEC("&H0800")
LBS.HASSTRINGS = HEXDEC("&H0040")
LBS.USETABSTOPS = HEXDEC("&H0080")
LBS.WANTKEYBOARDINPUT = HEXDEC("&H0400")
WS.HSCROLL = HEXDEC("&H00100000")
'/==================================================================================/'
' STATIC CONTROL STYLES
'/==================================================================================/'
SS.CENTER = HEXDEC("&H00000001")
SS.SIMPLE = HEXDEC("&H0000000B")
SS.CENTERIMAGE = HEXDEC("&H00000200")
SS.SUNKEN = HEXDEC("&H00001000")
'/==================================================================================/'
' BUTTON STYLES
'/==================================================================================/'
BS.CENTER = HEXDEC("&H00000300")
BS.VCENTER = HEXDEC("&H00000C00")
BS.PUSHLIKE = HEXDEC("&H00001000")
'/==================================================================================/'
' EXTENDED STYLES
'/==================================================================================/'
WS.EX.WINDOWEDGE = HEXDEC("&H00000100")
WS.EX.CLIENTEDGE = HEXDEC("&H00000200")
WS.EX.STATICEDGE = HEXDEC("&H00020000")
[GLOBALS]
GLOBAL FldrHndl
GLOBAL DirSize, _
FilSize, _
FdrSize, _
Action, _
Exclude, _
MultiSel, _
CurSel, _
HelpClosed
GLOBAL DirMask$
[EQUATES]
GLOBAL RSLD$, _
VDLM$, _
CMA$
GLOBAL SPC
[END.GLOBALS]
[DECLARATIONS]
OPEN "User32" FOR DLL AS #USER
OPEN "FN_dir" FOR DLL AS #DIR
OPEN "NUMBERMANDLL" FOR DLL AS #NUM
OPEN "DbFetch" FOR DLL AS #FETCH
[END.DECLARATIONS]
[INITIALIZE]
Action = 1
Exclude = 0
SPC = 4
FdrSize = 0
DirSize = 0
MultiSel = 0
FilSize = 0
HelpClosed = 0
RSLD$ = "\"
VDLM$ = "|"
CMA$ = ","
DIM Root$(0)
DIM Disp$(0)
DIM Fname$(0)
DIM Folders$(0, 0)
[END.INITIALIZE]
TxtStr$ = ""
CALL GET.ROOT
UpperLeftX = 100
UpperLeftY = 100
WindowWidth = 700
WindowHeight = 500
[CREATE.CONTROLS]
STYLEBITS #DMO.LBLMASK, SS.CENTER OR SS.CENTERIMAGE OR SS.SUNKEN, 0, 0, 0
STATICTEXT #DMO.LBLMASK, "TYPES", 5, 5, 120, 20
TEXTBOX #DMO.TXBMASK, 5, 32, 120, 20
STYLEBITS #DMO.LBLWORDS, SS.CENTER OR SS.CENTERIMAGE OR SS.SUNKEN, 0, 0, 0
STATICTEXT #DMO.LBLWORDS, "WORDS", 130, 5, 120, 20
TEXTBOX #DMO.TXBSWORD, 130, 32, 120, 20
STYLEBITS #DMO.CKBINC, BS.CENTER OR BS.VCENTER OR BS.PUSHLIKE, 0, WS.EX.STATICEDGE, 0
CHECKBOX #DMO.CKBINC, "INCLUDE", SETINC, RSETINC, 5, 60, 60, 20
STYLEBITS #DMO.CKBEXC, BS.CENTER OR BS.VCENTER OR BS.PUSHLIKE, 0, WS.EX.STATICEDGE, 0
CHECKBOX #DMO.CKBEXC, "EXCLUDE", SETEXC, RSETEXC, 70, 60, 60, 20
STYLEBITS #DMO.CKBSRCH, BS.CENTER OR BS.VCENTER OR BS.PUSHLIKE, 0, WS.EX.STATICEDGE, 0
CHECKBOX #DMO.CKBSRCH, "SEARCH", SETSRCH, RSETSRCH, 135, 60, 60, 20
STYLEBITS #DMO.LBLDIRS, SS.CENTER OR SS.CENTERIMAGE OR SS.SUNKEN, 0, 0, 0
STATICTEXT #DMO.LBLDIRS, "DIRECTORIES", 5, 90, 250, 20
STYLEBITS #DMO.LBLFLS, SS.CENTER OR SS.CENTERIMAGE OR SS.SUNKEN, 0, 0, 0
STATICTEXT #DMO.LBLFLS, "FILES", 260, 90, 250, 20
STYLEBITS #DMO.LBXFLDRS, WS.HSCROLL, 0, 0, 0
LISTBOX #DMO.LBXFLDRS, Disp$(), DIRS.CB, 5, 120, 250, 300
STYLEBITS #DMO.LBXFILES, WS.HSCROLL, 0, 0, 0
LISTBOX #DMO.LBXFILES, Fname$(), FILES.CB, 260, 120, 250, 300
[CREATE.MENU]
MENU #DMO, "ACTION", "Directories", MNU.DIRS, "Files", MNU.FILES, "Search", MNU.SRCH
MENU #DMO, "FILES", "Delete", MNU.DEL, "Trash", MNU.TRASH
MENU #DMO, "HELP", "About", MNU.ABOUT, "Help", MNU.HELP
[CREATE.WINDOW]
OPEN "FN_DLL_DEMO" FOR WINDOW AS #DMO
TxtStr$ = "*.BAS,*.TXT,*.RTF"
PRINT #DMO.TXBMASK, TxtStr$
TxtStr$ = "USHORT, CREATE, TVID"
PRINT #DMO.TXBSWORD, TxtStr$
PRINT #DMO.TXBMASK, "!DISABLE"
PRINT #DMO.TXBSWORD, "!DISABLE"
'PRINT #DMO.CKBINC, "SET"
PRINT #DMO.CKBINC, "DISABLE"
PRINT #DMO.CKBEXC, "DISABLE"
PRINT #DMO.CKBSRCH, "DISABLE"
PRINT #DMO.LBXFILES, "DISABLE"
PRINT #DMO, "TRAPCLOSE FINISH"
FldrHndl = HWND(#DMO.LBXFLDRS)
WAIT
END
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB SETINC Hndl$
LB.ADDSTRING = HEXDEC("&H0180")
LB.GETTEXT = HEXDEC("&H0189")
LB.GETCOUNT = HEXDEC("&H018B")
Exclude = 0 '<--- GLOBAL
NumFlds = 0
SelCnt = 0
Match = 0
Hndl = 0
Path$ = ""
FlPath$ = ""
PRINT #DMO.LBXFLDRS, "selectindex "; CurSel + 1
PRINT #DMO.LBXFLDRS, "selection? Path$"
Path$ = TRIM$(Path$)
IF (LEFT$(Path$, 1) = "+") OR (LEFT$(Path$, 1) = "-") THEN
Path$ = MID$(Path$, 2)
END IF
Match = FN.FindMatch(0, FdrSize, Path$)
Match = Match - 1
Path$ = Folders$(Match, 0)
Hndl = HWND(#DMO.LBXFILES)
CALLDLL #USER, "SendMessageA", Hndl AS ULONG, LB.ADDSTRING AS ULONG, 0 AS LONG, _
Path$ AS PTR, RetVal AS VOID
CALLDLL #USER, "SendMessageA", Hndl AS ULONG, LB.GETCOUNT AS ULONG, 0 AS LONG, _
0 AS LONG, SelCnt AS LONG
REDIM Fname$(SelCnt - 1)
FilSize = SelCnt - 1
FOR Match = 0 TO SelCnt - 1
FlPath$ = SPACE$(260)
CALLDLL #USER, "SendMessageA", Hndl AS ULONG, LB.GETTEXT AS ULONG, Match AS LONG, _
FlPath$ AS PTR, NumFlds AS LONG
FlPath$ = LEFT$(FlPath$, NumFlds)
Fname$(Match) = FlPath$
NEXT Match
PRINT #DMO.LBXFILES, "RELOAD"
PRINT #DMO.CKBINC, "RESET"
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB RSETINC Hndl$
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB SETEXC Hndl$
LB.ADDSTRING = HEXDEC("&H0180")
LB.GETTEXT = HEXDEC("&H0189")
LB.GETCOUNT = HEXDEC("&H018B")
Exclude = 1 '<--- GLOBAL
NumFlds = 0
SelCnt = 0
Match = 0
Hndl = 0
Path$ = ""
FlPath$ = ""
PRINT #DMO.LBXFLDRS, "selectindex "; CurSel + 1
PRINT #DMO.LBXFLDRS, "selection? Path$"
Path$ = TRIM$(Path$)
IF (LEFT$(Path$, 1) = "+") OR (LEFT$(Path$, 1) = "-") THEN
Path$ = MID$(Path$, 2)
END IF
Match = FN.FindMatch(0, FdrSize, Path$)
Match = Match - 1
Path$ = Folders$(Match, 0)
Path$ = "-" + Path$
Hndl = HWND(#DMO.LBXFILES)
CALLDLL #USER, "SendMessageA", Hndl AS ULONG, LB.ADDSTRING AS ULONG, 0 AS LONG, _
Path$ AS PTR, RetVal AS VOID
CALLDLL #USER, "SendMessageA", Hndl AS ULONG, LB.GETCOUNT AS ULONG, 0 AS LONG, _
0 AS LONG, SelCnt AS LONG
REDIM Fname$(SelCnt - 1)
FilSize = SelCnt - 1
FOR Match = 0 TO SelCnt - 1
FlPath$ = SPACE$(260)
CALLDLL #USER, "SendMessageA", Hndl AS ULONG, LB.GETTEXT AS ULONG, Match AS LONG, _
FlPath$ AS PTR, NumFlds AS LONG
FlPath$ = LEFT$(FlPath$, NumFlds)
Fname$(Match) = FlPath$
NEXT Match
PRINT #DMO.LBXFILES, "RELOAD"
PRINT #DMO.CKBEXC, "RESET"
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB RSETEXC Hndl$
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB SETSRCH Hndl$
ERR.FILE.NOT.FOUND = -1005
ERR.NO.FILES.FOUND = -1006
ERR.OP.CANCELLED = -1010
Result = 0
NumFlds = 0
NumPaths = 0
I = 0
J = 0
K = 0
Trash$ = ""
FileStr$ = ""
TmpStr$ = ""
SELECT CASE Action
CASE 2
Result = FN.BeginFiles()
IF Result = ERR.NO.FILES.FOUND THEN
NOTICE "File Error" + CHR$(13) + "No files found that match"
PRINT #DMO.CKBSRCH, "RESET"
EXIT SUB
END IF
Action = 4
PRINT #DMO.TXBMASK, ""
CASE 3
Result = FN.BeginSearch()
CASE 4
PRINT #DMO.TXBMASK, "!contents? Trash$"
Trash$ = LEFT$(Trash$, LEN(Trash$) - 1)
FileStr$ = Trash$
CALLDLL #DIR, "FN_Trash", Trash$ AS STRUCT, Result AS LONG
IF Result = ERR.OP.CANCELLED THEN
NOTICE "Trash operation cancelled"
PRINT #DMO.CKBSRCH, "RESET"
EXIT SUB
END IF
IF Result = ERR.FILE.NOT.FOUND THEN
NOTICE "File Not Found" + CHR$(13) + Trash$
END IF
CALLDLL #FETCH, "FN_FetchNumFields", Trash$ AS PTR, 0 AS LONG, NumPaths AS LONG
FOR I = 1 TO NumPaths
FileStr$ = SPACE$(260)
CALLDLL #FETCH, "FN_FetchField", Trash$ AS STRUCT, I AS LONG, _
FileStr$ AS STRUCT, 0 AS LONG, Result AS LONG
FileStr$ = TRIM$(FileStr$)
CALLDLL #FETCH, "FN_FetchNumFields", FileStr$ AS PTR, RSLD$ AS PTR, NumFlds AS LONG
TmpStr$ = SPACE$(60)
CALLDLL #FETCH, "FN_FetchField", FileStr$ AS PTR, NumFlds AS LONG, _
TmpStr$ AS PTR, RSLD$ AS PTR, Result AS VOID
TmpStr$ = TRIM$(TmpStr$)
FOR J = 0 TO FilSize
IF INSTR(Fname$(J), TmpStr$) THEN
Fname$(J) = ""
GOTO [NEXT.NAME]
END IF
NEXT J
[NEXT.NAME]
NEXT I
PRINT #DMO.LBXFILES, "RELOAD"
PRINT #DMO.TXBMASK, ""
END SELECT
PRINT #DMO.CKBSRCH, "RESET"
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB RSETSRCH Hndl$
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB FILES.CB Hndl$
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB MNU.DIRS 'Hndle$
LBS.MULTIPLESEL = HEXDEC("&H0008")
LBS.EXTENDEDSEL = HEXDEC("&H0800")
Style = 0
RetVal = 0
CALLDLL #USER, "GetWindowLongA", FldrHndl AS ULONG, _GWL_STYLE AS LONG, Style AS LONG
IF (Style AND LBS.MULTIPLESEL) = LBS.MULTIPLESEL THEN
Style = Style XOR (LBS.MULTIPLESEL OR LBS.EXTENDEDSEL)
CALLDLL #USER, "SetWindowLongA", FldrHndl AS ULONG, _GWL_STYLE AS LONG, _
Style AS LONG, RetVal AS VOID
END IF
Action = 1 '<--- GLOBAL
PRINT #DMO.TXBMASK, "!DISABLE"
PRINT #DMO.TXBSWORD, "!DISABLE"
PRINT #DMO.CKBINC, "DISABLE"
PRINT #DMO.CKBEXC, "DISABLE"
PRINT #DMO.CKBSRCH, "DISABLE"
PRINT #DMO.LBXFILES, "DISABLE"
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB MNU.FILES 'Hndl$
Action = 2
PRINT #DMO.TXBMASK, "!ENABLE"
PRINT #DMO.LBXFILES, "ENABLE"
PRINT #DMO.CKBSRCH, "ENABLE"
PRINT #DMO.TXBMASK, "!SETFOCUS"
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB MNU.SRCH 'Hndl$
LBS.MULTIPLESEL = HEXDEC("&H0008")
LBS.EXTENDEDSEL = HEXDEC("&H0800")
Style = 0
RetVal = 0
CALLDLL #USER, "GetWindowLongA", FldrHndl AS ULONG, _GWL_STYLE AS LONG, Style AS LONG
IF (Style AND LBS.MULTIPLESEL) <> LBS.MULTIPLESEL THEN
Style = Style OR LBS.MULTIPLESEL OR LBS.EXTENDEDSEL
CALLDLL #USER, "SetWindowLongA", FldrHndl AS ULONG, _GWL_STYLE AS LONG, _
Style AS LONG, RetVal AS VOID
END IF
Action = 3
PRINT #DMO.TXBMASK, "!ENABLE"
PRINT #DMO.TXBSWORD, "!ENABLE"
PRINT #DMO.CKBINC, "ENABLE"
PRINT #DMO.CKBEXC, "ENABLE"
PRINT #DMO.CKBSRCH, "ENABLE"
PRINT #DMO.LBXFILES, "ENABLE"
PRINT #DMO.TXBMASK, "!SETFOCUS"
PRINT #DMO.LBLFLS, "SELECTED FOLDERS"
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB MNU.DEL
Idx = 0
SELECT CASE Action
CASE 2
PRINT #DMO.LBXFILES, "selectionindex? Idx"
Fname$(Idx - 1) = ""
PRINT #DMO.LBXFILES, "RELOAD"
CASE 3
PRINT #DMO.LBXFILES, "selectionindex? Idx"
Fname$(Idx - 1) = ""
PRINT #DMO.LBXFILES, "RELOAD"
CASE 4
PRINT #DMO.LBXFILES, "selectionindex? Idx"
Fname$(Idx - 1) = ""
PRINT #DMO.LBXFILES, "RELOAD"
END SELECT
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB MNU.TRASH
Idx = 0
NumFields = 0
Trash$ = ""
Selected$ = ""
Path$ = ""
Named$ = ""
Sp$ = SPACE$(SPC)
SELECT CASE Action
CASE 2
CASE 4
PRINT #DMO.TXBMASK, "!contents? Trash$"
PRINT #DMO.LBXFILES, "selectionindex? Idx"
PRINT #DMO.LBXFILES, "selectindex "; Idx
PRINT #DMO.LBXFILES, "selection? Selected$"
CALLDLL #FETCH, "FN_FetchAllFields", Selected$ AS STRUCT, 0 AS LONG, _
Sp$ AS STRUCT, NumFields AS LONG
SELECT CASE NumFields
CASE 2
Path$ = SPACE$(260)
Named$ = SPACE$(260)
CALLDLL #FETCH, "FN_FetchField", Selected$ AS STRUCT, 1 AS LONG, _
Path$ AS STRUCT, Sp$ AS STRUCT, NumFields AS LONG
CALLDLL #FETCH, "FN_FetchField", Selected$ AS STRUCT, 2 AS LONG, _
Named$ AS STRUCT, Sp$ AS STRUCT, NumFields AS LONG
Path$ = TRIM$(Path$) + RSLD$
Named$ = TRIM$(Named$)
Trash$ = Trash$ + Path$ + Named$ + CMA$
CASE 3
Path$ = SPACE$(260)
Named$ = SPACE$(260)
CALLDLL #FETCH, "FN_FetchField", Selected$ AS STRUCT, 2 AS LONG, _
Path$ AS STRUCT, Sp$ AS STRUCT, NumFields AS LONG
CALLDLL #FETCH, "FN_FetchField", Selected$ AS STRUCT, 3 AS LONG, _
Named$ AS STRUCT, Sp$ AS STRUCT, NumFields AS LONG
Path$ = TRIM$(Tmp$) + RSLD$
Named$ = TRIM$(Named$)
Trash$ = Trash$ + Path$ + Named$ + CMA$
END SELECT
PRINT #DMO.TXBMASK, Trash$
END SELECT
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB MNU.ABOUT
NOTICE "ABOUT" + CHR$(13) + "THIS WAS FUN!!!" + CHR$(13) + "Use and abuse at your own risk"
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB MNU.HELP
CALL HELP
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB DIRS.CB Hndl$
CALL INSERT.DIRS, FdrSize
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB FINISH Hndl$
CLOSE #DMO
CLOSE #DIR
CLOSE #NUM
CLOSE #FETCH
CLOSE #USER
IF HelpClosed = 1 THEN
CLOSE #HLP
END IF
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB GET.ROOT
MaxLen = 0
NumDirs = 0
RetVal = 0
J = 0
I = 0
DirStr$ = ""
CALLDLL #DIR, "FN_InitDrives", RetVal AS LONG
CALLDLL #NUM, "FN_GetHiWord", RetVal AS LONG, MaxLen AS SHORT
CALLDLL #NUM, "FN_GetLowWord", RetVal AS LONG, NumDirs AS SHORT
DirSize = NumDirs - 1
FdrSize = DirSize
REDIM Root$(DirSize)
REDIM Folders$(FdrSize, 1)
REDIM Disp$(FdrSize)
J = -1
FOR I = 1 TO NumDirs
J = J + 1
DirStr$ = SPACE$(MaxLen + 1)
CALLDLL #DIR, "FN_GetNextDrive", DirStr$ AS STRUCT, RetVal AS LONG
DirStr$ = TRIM$(DirStr$)
Folders$(J, 0) = DirStr$
Folders$(J, 1) = "+"
Disp$(J) = "+" + DirStr$
NEXT I
END SUB
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
SUB INSERT.DIRS BYREF NumFolders
ERR.NO.PATHS.FOUND = -1003
LB.GETCURSEL = HEXDEC("&H0188")
LB.GETTEXT = HEXDEC("&H0189")
LB.INSERTSTRING = HEXDEC("&H0181")
LB.GETCOUNT = HEXDEC("&H018B")
LB.SETCURSEL = HEXDEC("&H0186")
MaxLen = 0
NumItems = 0
SelItem = 0
LstItem = 0
NumFlds = 0
Posn = 0
LbCount = 0
Active = 0
TmpSize = 0
Match = 0
NumChars = 0
I = 0
J = 0
PathStr$ = ""
FldStr$ = ""
MatchStr$ = ""
LstMatch$ = ""
DIM Holder$(0, 0)
DIM Path$(0, 0)
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.GETCURSEL AS ULONG, _
0 AS LONG, 0 AS LONG, SelItem AS LONG
PRINT #DMO.LBXFLDRS, "selectindex "; SelItem + 1
PRINT #DMO.LBXFLDRS, "selection? PathStr$"
PathStr$ = TRIM$(PathStr$)
IF (LEFT$(PathStr$, 1) = "+") OR (LEFT$(PathStr$, 1) = "-") THEN
FldStr$ = MID$(PathStr$, 2)
ELSE
FldStr$ = PathStr$
END IF
Match = FN.FindMatch(0, NumFolders, FldStr$)
'CALLDLL #FETCH, "FN_FetchNumFields", PathStr$ AS STRUCT, RSLD$ AS STRUCT, _
' NumFlds AS LONG
'PRINT PathStr$, NumFlds
[CKMATCH]
IF Match = 0 THEN
PRINT "MATCH = 0"
PRINT Match, SelItem, PathStr$, FldStr$
END
EXIT SUB
END IF
Match = Match - 1
[CHECK.ACTION]
SELECT CASE Folders$(Match, 1)
CASE "N"
IF (Action = 2) OR (Action = 3) THEN
CurSel = SelItem
END IF
EXIT SUB
CASE "+"
NumFlds = FN.Check.For.Children(Match, SelItem, NumFolders)
IF NumFlds > 0 THEN
EXIT SUB
END IF
CASE "-"
NumFlds = FN.Collapse.Lst(Match, SelItem, NumFolders)
IF NumFlds THEN
EXIT SUB
END IF
CASE ELSE
PRINT "CASE ELSE"
PRINT Folders$(Match, 0), Folders$(Match, 1)
END
END SELECT
MatchStr$ = Folders$(Match, 0)
LstMatch$ = MatchStr$
[INIT.PATH]
CALLDLL #DIR, "FN_InitDirPaths", MatchStr$ AS STRUCT, RetVal AS LONG
IF RetVal = ERR.NO.PATHS.FOUND THEN
J = INSTR(Disp$(SelItem), "+")
Disp$(SelItem) = LEFT$(Disp$(SelItem), J - 1) + " " + MID$(Disp$(SelItem), J + 1)
Folders$(Match, 1) = "N"
PRINT #DMO.LBXFLDRS, "RELOAD"
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.SETCURSEL AS ULONG, _
SelItem AS LONG, 0 AS LONG, SelItem AS LONG
EXIT SUB
END IF
CALLDLL #NUM, "FN_GetHiWord", RetVal AS LONG, MaxLen AS SHORT
CALLDLL #NUM, "FN_GetLowWord", RetVal AS LONG, NumItems AS SHORT
[GET.PATH.LIST]
LstItem = SelItem
REDIM Path$(NumItems - 1, 1)
NumFlds = 0
FOR I = 0 TO NumItems - 1
PathStr$ = SPACE$(MaxLen)
RetVal = 0
CALLDLL #DIR, "FN_GetNextDir", PathStr$ AS STRUCT, 0 AS LONG, RetVal AS LONG
RetVal = 0
PathStr$ = TRIM$(PathStr$)
CALLDLL #DIR, "FN_SubCheck", PathStr$ AS PTR, RetVal AS LONG
Path$(I, 0) = PathStr$
Path$(I, 1) = "+"
IF RetVal <> 1 THEN
Path$(I, 1) = "N"
END IF
NEXT I
NumFlds = 0
FOR I = 0 TO NumItems - 1
PathStr$ = Path$(I, 0)
RetVal = 0
IF NumFlds = 0 THEN
CALLDLL #FETCH, "FN_FetchNumFields", PathStr$ AS STRUCT, RSLD$ AS STRUCT, _
NumFlds AS LONG
Posn = SPC * (NumFlds - 1)
END IF
FldStr$ = SPACE$(MaxLen)
CALLDLL #FETCH, "FN_FetchField", PathStr$ AS STRUCT, NumFlds AS LONG, _
FldStr$ AS STRUCT, RSLD$ AS STRUCT, RetVal AS LONG
FldStr$ = TRIM$(FldStr$)
IF Path$(I, 1) = "N" THEN
FldStr$ = SPACE$(Posn) + " " + FldStr$
ELSE
FldStr$ = SPACE$(Posn) + "+" + FldStr$
END IF
SelItem = SelItem + 1
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.INSERTSTRING AS ULONG, _
SelItem AS LONG, FldStr$ AS STRUCT, SelItem AS LONG
NEXT I
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.GETCOUNT AS ULONG, _
0 AS LONG, 0 AS LONG, LbCount AS LONG
[RESIZE.DISPLAY]
REDIM Disp$(LbCount - 1)
FOR I = 0 TO LbCount - 1
FldStr$ = SPACE$(260)
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.GETTEXT AS ULONG, _
I AS LONG, FldStr$ AS STRUCT, NumChars AS LONG
FldStr$ = LEFT$(FldStr$, NumChars)
IF I = LstItem THEN
J = INSTR(FldStr$, "+")
FldStr$ = LEFT$(FldStr$, J - 1) + "-" + MID$(FldStr$, J + 1)
END IF
Disp$(I) = FldStr$
NEXT I
PRINT #DMO.LBXFLDRS, "RELOAD"
[RESIZE.ARRAY]
TmpSize = NumFolders + NumItems
REDIM Holder$(TmpSize, 1)
FOR I = 0 TO NumFolders
Holder$(I, 0) = Folders$(I, 0)
Holder$(I, 1) = Folders$(I, 1)
NEXT I
J = I - 1
FOR I = 0 TO NumItems - 1
J = J + 1
Holder$(J, 0) = Path$(I, 0)
Holder$(J, 1) = Path$(I, 1)
NEXT I
NumFolders = TmpSize
REDIM Folders$(NumFolders, 1)
FOR I = 0 TO TmpSize
Folders$(I, 0) = Holder$(I, 0)
Folders$(I, 1) = Holder$(I, 1)
IF Folders$(I, 0) = LstMatch$ THEN
IF Folders$(I, 1) = "N" THEN GOTO [INCR.FOLDER]
Folders$(I, 1) = "-"
END IF
[INCR.FOLDER]
NEXT I
'IF Action = 3 THEN
' CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.SETSEL AS ULONG, _
' LstItem AS LONG, 0 AS LONG, SelItem AS LONG
' CurSel = LstItem
' EXIT SUB
'END IF
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.SETCURSEL AS ULONG, _
LstItem AS LONG, 0 AS LONG, SelItem AS LONG
IF (Action = 2) OR (Action = 3) THEN
CurSel = LstItem
END IF
END SUB
'---------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------
FUNCTION FN.FindMatch(Start, NumFldrs, FldStr$)
NumFields = 0
FieldNum = 0
Match = 0
Stp = -1
I = 0
J = 0
FieldStr$ = ""
FOR I = Start TO NumFldrs
Path$ = Folders$(I, 0)
CALLDLL #FETCH, "FN_FetchNumFields", Path$ AS STRUCT, RSLD$ AS STRUCT, _
NumFields AS LONG
FOR J = NumFields TO 1 STEP Stp
FieldStr$ = SPACE$(260)
CALLDLL #FETCH, "FN_FetchField", Path$ AS STRUCT, J AS LONG, _
FieldStr$ AS STRUCT, RSLD$ AS STRUCT, RetVal AS VOID
FieldStr$ = TRIM$(FieldStr$)
IF FieldStr$ = FldStr$ THEN
Match = I + 1
'FldStr$ = FieldStr$
FN.FindMatch = Match
EXIT FUNCTION
END IF
NEXT J
NEXT I
FN.FindMatch = Match
END FUNCTION
'----------------------------------------------------------------------------------------
'----------------------------------------------------------------------------------------
FUNCTION FN.Check.For.Children(FolderNum, SelItem, NumFldrs)
LB.GETTEXT = HEXDEC("&H0189")
LB.INSERTSTRING = HEXDEC("&H0181")
LB.GETCOUNT = HEXDEC("&H018B")
LB.SETCURSEL = HEXDEC("&H0186")
NumFields = 0
NumPaths = 0
LbCount = 0
ChrCount = 0
LstItem = 0
Posn = 0
Ok = 0
I = 0
RootPath$ = ""
CurPath$ = ""
FieldStr$ = ""
IF FolderNum + 1 > NumFldrs THEN
print "expand to big"
FN.Check.For.Children = 0
EXIT FUNCTION
END IF
LstItem = SelItem
RootPath$ = Folders$(FolderNum, 0)
FOR I = FolderNum + 1 TO NumFldrs
Ok = INSTR(Folders$(I, 0), RootPath$)
' print "I = "; I; " "; Folders$(I, 0); " | "; RootPath$
IF Ok = 0 THEN
' print "expanding path not found"
GOTO [NXT.MATCH]
'FN.Check.For.Children = NumPaths
' EXIT FOR
END IF
NumPaths = NumPaths + 1
CurPath$ = Folders$(I, 0)
CALLDLL #FETCH, "FN_FetchNumFields", CurPath$ AS STRUCT, RSLD$ AS STRUCT, _
NumFields AS LONG
FieldStr$ = SPACE$(260)
CALLDLL #FETCH, "FN_FetchField", CurPath$ AS STRUCT, NumFields AS LONG, _
FieldStr$ AS STRUCT, RSLD$ AS STRUCT, RetVal AS LONG
FieldStr$ = TRIM$(FieldStr$)
Posn = SPC * (NumFields - 1)
IF Folders$(I, 1) = "N" THEN
FieldStr$ = SPACE$(Posn) + " " + FieldStr$
ELSE
FieldStr$ = SPACE$(Posn) + "+" + FieldStr$
Folders$(I, 1) = "+"
END IF
SelItem = SelItem + 1
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.INSERTSTRING AS ULONG, _
SelItem AS LONG, FieldStr$ AS STRUCT, SelItem AS LONG
[NXT.MATCH]
NEXT I
IF NumPaths > 0 THEN
Folders$(FolderNum, 1) = "-"
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.GETCOUNT AS ULONG, _
0 AS LONG, 0 AS LONG, LbCount AS LONG
REDIM Disp$(LbCount - 1)
FOR I = 0 TO LbCount - 1
FieldStr$ = SPACE$(260)
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.GETTEXT AS ULONG, _
I AS LONG, FieldStr$ AS STRUCT, ChrCount AS LONG
FieldStr$ = LEFT$(FieldStr$, ChrCount)
IF I = LstItem THEN
Ok = INSTR(FieldStr$, "+")
FieldStr$ = LEFT$(FieldStr$, Ok - 1) + "-" + MID$(FieldStr$, Ok + 1)
END IF
Disp$(I) = FieldStr$
NEXT I
PRINT #DMO.LBXFLDRS, "RELOAD"
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.SETCURSEL AS ULONG, _
LstItem AS LONG, 0 AS LONG, RetVal AS LONG
IF (Action = 2) OR (Action = 3) THEN
CurSel = LstItem
END IF
END IF
'print "finished expanding numpahts = ";NumPaths
FN.Check.For.Children = NumPaths
END FUNCTION
'---------------------------------------------------------------------------------
'---------------------------------------------------------------------------------
FUNCTION FN.Collapse.Lst(FolderNum, SelItem, NumFldrs)
LB.DELETESTRING = HEXDEC("&H0182")
LB.GETTEXT = HEXDEC("&H0189")
LB.GETCOUNT = HEXDEC("&H018B")
LB.SETCURSEL = HEXDEC("&H0186")
NumFields = 0
NumPaths = 0
LbCount = 0
ChrCount = 0
LstItem = 0
LenPath = 0
Match = 0
Posn = 0
Ok = 0
I = 0
RootPath$ = ""
CurPath$ = ""
FieldStr$ = ""
LstItem = SelItem
SelItem = SelItem + 1
RootPath$ = Folders$(FolderNum, 0)
LenPath = LEN(RootPath$)
Posn = FolderNum + 1
[COLLAPSE.NEXT]
FieldStr$ = SPACE$(260)
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.GETTEXT AS ULONG, _
SelItem AS LONG, FieldStr$ AS STRUCT, ChrCount AS LONG
FieldStr$ = TRIM$(FieldStr$)
IF (LEFT$(FieldStr$, 1) = "+") OR (LEFT$(FieldStr$, 1) = "-") THEN
FieldStr$ = MID$(FieldStr$, 2)
END IF
Match = FN.FindMatch(Posn, NumFldrs, FieldStr$)
IF Match > 0 THEN
Match = Match - 1
IF LEN(Folders$(Match, 0)) <= LenPath THEN GOTO [MATCH.DONE]
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.DELETESTRING AS ULONG, _
SelItem AS LONG, 0 AS LONG, LbCount AS LONG
NumPaths = NumPaths + 1
GOTO [COLLAPSE.NEXT]
END IF
[MATCH.DONE]
IF NumPaths THEN
REDIM Disp$(LbCount - 1)
FOR I = 0 to LbCount - 1)
FieldStr$ = SPACE$(260)
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.GETTEXT AS ULONG, _
I AS LONG, FieldStr$ AS STRUCT, ChrCount AS LONG
FieldStr$ = LEFT$(FieldStr$, ChrCount)
IF I = LstItem THEN
Ok = INSTR(FieldStr$, "-")
FieldStr$ = LEFT$(FieldStr$, Ok - 1) + "+" + MID$(FieldStr$, Ok + 1)
END IF
Disp$(I) = FieldStr$
NEXT I
PRINT #DMO.LBXFLDRS, "RELOAD"
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.SETCURSEL AS ULONG, _
LstItem AS LONG, 0 AS LONG, SelItem AS LONG
IF (Action = 2) OR (Action = 3) THEN
CurSel = LstItem
END IF
Folders$(FolderNum, 1) = "+"
END IF
FN.Collapse.Lst = NumPaths
END FUNCTION
'----------------------------------------------------------------------------------
'----------------------------------------------------------------------------------
FUNCTION FN.BeginFiles()
LB.GETCURSEL = HEXDEC("&H0188")
LB.GETTEXT = HEXDEC("&H0189")
MaxLen = 0
NumItems = 0
NumFlds = 0
RetVal = 0
SelItem = 0
Match = 0
I = 0
Mask$ = ""
Path$ = ""
PRINT #DMO.TXBMASK, "!contents? Mask$"
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.GETCURSEL AS ULONG, _
LstItem AS LONG, 0 AS LONG, SelItem AS LONG
Path$ = SPACE$(60)
CALLDLL #USER, "SendMessageA", FldrHndl AS ULONG, LB.GETTEXT AS ULONG, _
SelItem AS LONG, Path$ AS PTR, NumChrs AS LONG
Path$ = TRIM$(Path$)
IF (LEFT$(Path$, 1) = "+") OR (LEFT$(Path$, 1) = "-") THEN
Path$ = MID$(Path$, 2)
END IF
Match = FN.FindMatch(0, FdrSize, Path$)
Match = Match - 1
Path$ = Folders$(Match, 0)
CALLDLL #DIR, "FN_InitFiles", Path$ AS PTR, Mask$ AS PTR, NumFiles AS LONG
CALLDLL #NUM, "FN_GetHiWord", NumFiles AS LONG, MaxLen AS SHORT
CALLDLL #NUM, "FN_GetLowWord", NumFiles AS LONG, NumItems AS SHORT
[FILE.ERROR]
IF NumItems < 0 THEN
FN.BeginFiles = NumItems
EXIT FUNCTION
END IF
REDIM Fname$(NumItems - 1)
FilSize = NumItems - 1
FOR I = 0 TO NumItems - 1
Path$ = SPACE$(MaxLen)
CALLDLL #DIR, "FN_GetNextFile", Path$ AS PTR, 0 AS LONG, RetVal AS LONG
Path$ = TRIM$(Path$)
CALLDLL #FETCH, "FN_FetchNumFields", Path$ AS STRUCT, RSLD$ AS STRUCT, _
NumFlds AS LONG
Mask$ = SPACE$(60)
CALLDLL #FETCH, "FN_FetchField", Path$ AS STRUCT, NumFlds AS LONG, _
Mask$ AS STRUCT, RSLD$ AS STRUCT, RetVal AS LONG
Mask$ = TRIM$(Mask$)
Path$ = REPLSTR$( Path$, "\" + Mask$, "")
Fname$(I) = Path$ + SPACE$(SPC) + Mask$
NEXT I
PRINT #DMO.LBXFILES, "RELOAD"
FN.BeginFiles = NumItems
END FUNCTION
'--------------------------------------------------------------------------------------
'--------------------------------------------------------------------------------------
FUNCTION FN.BeginSearch()
ERR.BAD.PARAMETER = -1008
ERR.NO.FILES.FOUND = -1006
LB.GETCOUNT = HEXDEC("&H018B")
LstHndl = 0
WinHndl = 0
ListCount = 0
NumFiles = 0
MaxLen = 0
NumItems = 0
I = 0
RetVal = 0
FileType$ = ""
SrchWord$ = ""
SrchPath$ = ""
TmpStr$ = ""
Sp$ = SPACE$(SPC)
LstHndl = HWND(#DMO.LBXFILES)
WinHndl = HWND(#DMO)
PRINT #DMO.TXBMASK, "!contents? FileType$"
PRINT #DMO.TXBSWORD, "!contents? SrchWord$"
CALLDLL #USER, "SendMessageA", LstHndl AS ULONG, LB.GETCOUNT AS LONG, 0 AS LONG, _
0 AS LONG, ListCount AS LONG
IF ListCount = 0 THEN
EXIT FUNCTION
END IF
IF ListCount = 1 THEN
SrchPath$ = Fname$(0)
ELSE
FOR I = 0 TO ListCount - 2
SrchPath$ = SrchPath$ + Fname$(I) + ","
NEXT I
SrchPath$ = SrchPath$ + Fname$(I)
END IF
CALLDLL #DIR, "FN_Find", WinHndl AS ULONG, SrchPath$ AS STRUCT, FileType$ AS STRUCT, _
SrchWord$ AS STRUCT, NumFiles AS LONG
IF NumFiles = ERR.BAD.PARAMETER THEN
NOTICE "BAD PARAMETER" + CHR$(13) + "An empty string was passed to FN_Find"
EXIT FUNCTION
END IF
IF NumFiles = ERR.NO.FILES.FOUND THEN
NOTICE "NO FILES FOUND"
EXIT FUNCTION
END IF
CALLDLL #NUM, "FN_GetHiWord", NumFiles AS LONG, MaxLen AS SHORT
CALLDLL #NUM, "FN_GetLowWord", NumFiles AS LONG, NumItems AS SHORT
REDIM Fname$(NumItems - 1)
FilSize = NumItems - 1
FOR I = 0 TO NumItems - 1
TmpStr$ = SPACE$(MaxLen)
CALLDLL #DIR, "FN_GetNextFile", TmpStr$ AS PTR, I AS LONG, RetVal AS LONG
TmpStr$ = TRIM$(TmpStr$)
SrchWord$ = SPACE$(MaxLen)
SrchPath$ = SPACE$(MaxLen)
FileType$ = SPACE$(MaxLen)
CALLDLL #FETCH, "FN_FetchField", TmpStr$ AS STRUCT, 1 AS LONG, _
SrchWord$ AS PTR, CMA$ AS PTR, RetVal AS LONG
CALLDLL #FETCH, "FN_FetchField", TmpStr$ AS STRUCT, 2 AS LONG, _
SrchPath$ AS PTR, CMA$ AS PTR, RetVal AS LONG
CALLDLL #FETCH, "FN_FetchField", TmpStr$ AS STRUCT, 3 AS LONG, _
FileType$ AS PTR, CMA$ AS PTR, RetVal AS LONG
SrchWord$ = TRIM$(SrchWord$)
SrchPath$ = TRIM$(SrchPath$)
FileType$ = TRIM$(FileType$)
Fname$(I) = SrchWord$ + Sp$ + SrchPath$ + Sp$ + FileType$
NEXT I
PRINT #DMO.LBXFILES, "RELOAD"
Action = 4
PRINT #DMO.TXBMASK, ""
PRINT #DMO.LBLFLS, "FILES FOUND"
PRINT #DMO.TXBMASK, "!DISABLE"
PRINT #DMO.TXBSWORD, "!DISABLE"
'PRINT #DMO.CKBINC, "DISABLE"
PRINT #DMO.CKBEXC, "DISABLE"
PRINT #DMO.CKBSRCH, "DISABLE"
END FUNCTION
'------------------------------------------------------------------------------------
'------------------------------------------------------------------------------------
SUB HELP
STRUCT tRect, _
X AS LONG, _
Y AS LONG, _
X1 AS LONG, _
Y1 AS LONG
HalfX = 0
FullX = 0
RetVal = 0
TxtHndl = 0
WinHndl = 0
TxtLen = 0
Col = 0
Row = 0
Dcol = 0
Drow = 0
HelpClosed = 1
TxtStr$ = ""
CRLF$ = CHR$(13) + CHR$(10)
UpperLeftX = 100
UpperLeftY = 100
WindowWidth = 700
WindowHeight = 500
TEXTEDITOR #HLP.TXT, 0, 0, WindowWidth - 10, WindowHeight - 50
OPEN "HELP" FOR WINDOW AS #HLP
TxtHndl = HWND(#HLP.TXT)
WinHndl = HWND(#HLP)
CALLDLL #USER, "GetClientRect", WinHndl AS ULONG, tRect AS PTR, RetVal AS VOID
WindowWidth = tRect.X1.struct - 2
WindowHeight = tRect.Y1.struct - 2
CALLDLL #USER, "MoveWindow", TxtHndl AS ULONG, 0 AS LONG, 0 AS LONG, _
WindowWidth AS LONG, WindowHeight AS LONG, 1 AS LONG, RetVal AS VOID
CALLDLL #USER, "GetClientRect", TxtHndl AS ULONG, tRect AS PTR, RetVal AS VOID
HalfX = INT(tRect.X1.struct / 8 + .5)
FullX = INT(tRect.X1.struct / 8)
PRINT #HLP, "TRAPCLOSE END.HELP"
FOR I = 1 TO 100
READ TxtStr$, Dcol, Drow
IF TxtStr$ = "END" THEN EXIT FOR
IF Dcol < 1 THEN Dcol = HalfX - LEN(TxtStr$)
PRINT #HLP.TXT, "!select ";Dcol;" ";Drow
PRINT #HLP.TXT, "!insert TxtStr$"
NEXT I
PRINT #HLP.TXT, "!select ";1;" ";1
TxtStr$ = ""
PRINT #HLP.TXT, "!insert TxtStr$"
EXIT SUB
[HELP.DATA]
DATA "MENU BAR", 0 , 1
DATA "______________", 0, 2
DATA "ACTION:", 1, 3
DATA "Directories: Disables text boxes and buttons (beginning default)", 4, 4
DATA "Files: Enables the TYPES text box and the SEARCH button", 4, 5
DATA "Search: Enables the TYPES text box, WORDS text box, and the INCLUDE, EXCLUDE, and SEARCH buttons", 4, 6
'DATA " ", 1, 7
DATA "FILES:", 1, 8
DATA "Delete: Deletes a selected item from the FILES/SELECTED DIRECTORIES list box", 4, 9
DATA "Trash: Allows movement of one or more files to the RECYCLE BIN", 4, 10
'DATA " ", 1, 11
DATA "OPERATION", 0, 12
DATA "________________", 0, 13
DATA "The FILES list box begins with the base directories on your computer.", 1, 14
DATA "Directories beginning with a '+' have sub directories. Those that do not have no sub directories.", 1, 15
DATA "Double click on a directory to bring up its sub directories, if any. The symbol preceeding the directory name", 1, 17
DATA "will change to a '-' sign. Double click again to close the directory. The symbol will change back to '+'.", 1, 18
DATA "ACTION: Files", 0, 20
DATA "____________________", 0, 21
DATA "This enables the TYPES text box and places the caret at the left side of the box. Enter one or more file types ", 1, 22
DATA "in this box with one or more wild-card characters, e. g. t*.rc*, *.map", 1, 23
DATA "In the Directoies list, navigate to the directory for which a list is desired.", 1, 24
DATA "Click on the SEARCH button. If files are found matching the type they will be placed in the FILES list.", 1, 25
DATA "If you want to remove a file from the list, double click on the file and select 'Delete' from the .", 1, 27
DATA "FILES menu. The file will be removed from the list. It WILL NOT be removed from the directory.", 1, 28
DATA "If you want to send one or more files to the RECYCLE BIN double click on the file and from the ", 1, 30
DATA "FILES menu select 'Trash'. When finished, click on the SEARCH button. A message will pop up asking you", 1, 31
DATA "if you want to send the item(s) to the recycle bin.", 1, 32
DATA "ACTION: Search", 0, 34
DATA "_______________________", 0, 35
DATA "This enable the TYPES and WORDS text boxes and the INCLUDE, EXCLUDE, AND SEARCH buttons.", 1, 36
DATA "The search looks for files matching the types you specify in the TYPES edit box that contain one of the words you ", 1, 38
DATA "specify in the WORDS edit box. The search looks is the directory you specify plus all of its sub directories.", 1, 39
DATA "Navigate to the directory you want to search. Click on INCLUDE to search that directory and all of its sub directories.", 1, 41
DATA "Click on EXCLUDE if you do not want to search a directory. The directory will be listed in the SELECTED FOLDER list.", 1, 42
DATA "If you click on EXCLUDE the directory will be listed with a leading '-' symbol.", 1, 43
DATA "If you make an error click on the directory in the SELECTED FOLDER list then select 'Delete' from the FILES menu item.", 1, 44
DATA "The directory will be removed from the list.", 1, 45
DATA "When finished selecting directories click on SEARCH. A progress window will pop up informing you what it is doing and", 1, 47
DATA "and how much it has left. Clicking the 'KILL' button on the progress window will not stop the search.", 1, 48
DATA "When the search is complete the files found will be listed in the FILES list. The list is divided into three ", 1, 50
DATA "parts seperated by spaces. The first part is the word found, the second part is the directory path to the file,", 1, 51
DATA "and the third part is the file name.", 1, 52
DATA "To delete files from the list or send files to the RECYCLE BIN see 'ACTION: Files'.", 1, 54
DATA "NOTE!!!!", 0, 56
DATA "_______________", 0, 57
DATA "If you are searching for files other than text type files, e. g. bmp, pif, tif, jpg, DO NOT include search words. If you", 1, 58
DATA "do so unpredictable results will occur.", 1, 59
DATA "END", 1, 17
END SUB
'-------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------
SUB END.HELP Hndl$
CLOSE #HLP
HelpClosed = 2
END SUB