Older Version
Newer Version
GordonR
Mar 17, 2016
[[file:oefBB.txt]] oefBB.txt is not needed separate anymore It's included by DATA statements [[code format="lb"]] ' LB Help Search HelpGordon.bas ' Author: Gordon Rahman ' Date: 29.05.11 ' ' This code is free for personal use. ' You may not republish this code in its current form. ' You may modify this code for your personal use. ' You may publish a modified version of this code under these conditions: ' 1. You have made major changes to the code. ' 2. You give credit to the original author ' This the (almost) final solution. ' Look out for next editions?nomainwin ' check for valid LB version if Version$ <>"4.04""4.5.0" then notice "Wrong LB Version!"; chr$(13);_ "This add-on is only valid for LB v4.04!"; chr$(13);_ "Exiting ... (StartupDir$ function missing)" end end if 'constants for tabControl: TCIF.TEXT = 1 TCIF.IMAGE =2 TCS.MULTILINE = 512 TCM.INSERTITEMA = 4871 TCM.GETCURSEL = 4875 TCM.SETCURSEL = 4876 tabID = 1 'current tab oldTab = 0 'previously selected tab struct TCITEM,_ mask as ulong,_ dwState as ulong,_ dwStateMask as ulong,_ pszText$ as ptr,_ txtMax as long,_ iImage as long,_ lParam as long 'constants for SendmessageA msg1 = _LB_GETSEL msg2 = _LB_SETTOPINDEX msg3 = _LB_SETSEL msg4 = _LB_GETSELCOUNT global retSendM dim totalSelItems$(20) 'internet$="C:\Program files\Internet Explorer\IEXPLORE.EXE" helpDir$ = StartupDir$+"\lb4help\LibertyBASIC_4_web\HTML\" 'reading in the HTML helpfiles dim info$(10,10) files helpDir$, "*.htm", info$() numFiles = val(info$(0,0)) 'print numFiles '(271) dim a$(numFiles,1) dim helpItem$(numFiles), helpItemFile$(numFiles), dispHelpFile$(500) for i = 1 to numFiles open helpDir$+info$(i,0) for input as #f html$ = input$(#f, LOF(#f)) tagpos1 = instr(html$,"<TITLE>") tagpos2 = instr(html$,"</TITLE>") Title$ = mid$(html$,tagpos1+7,(tagpos2-tagpos1-7)) a$(i,0) = Title$ a$(i,1) = info$(i,0) close #f next sort a$(),1,numFiles,0 for t = 1 to numFiles helpItem$(t) = a$(t,0) helpItemFile$(t) = a$(t,1) next t 'reading in the data from oefBB$() itemsInOef = 0 while a$ <> "zzzz" read a$ itemsInOef = itemsInOef + 1 wend dim oefBB$(itemsInOef) restore itemsInOef = 0 :a$ = "" while a$ <> "zzzz" read a$ itemsInOef = itemsInOef + 1 oefBB$(itemsInOef) = a$ wend 'initialize DLL for the TAB calldll #comctl32, "InitCommonControls", ret as void 'first TAB page WindowWidth=435:WindowHeight=455 UpperLeftX = 300 : UpperLeftY = 200 listbox #tab1.listbox1, helpItem$(, [listbox1DoubleClick], 20, 145, 390, 225 button #tab1.button2,"Display Item",[button2Click], UL, 100, 377, 95, 25 button #tab1.button3,"Print",[button3Click], UL, 210, 377, 85, 25 button #tab1.button4,"Cancel",[quit], UL, 310, 377, 95, 25 statictext #tab1.statictext5, "2. Select Item and press Display button ", 20, 112, 250, 20 textbox #tab1.textbox6, 20, 62, 390, 35 statictext #tab1.statictext7, "1. Type first letter of search item", 15, 37, 250, 20 Stylebits #tab1, 0, 0, _WS_EX_CLIENTEDGE, 0 'Stylebits #tab1, _WS_DLGFRAME,0,0,0 open "" for window as #tab1 #tab1.listbox1 "singleclickselect" #tab1.listbox1,"reload" #tab1.button3 "!disable" 'second TAB page Stylebits #tab2.default, _BS_DEFPUSHBUTTON, 0, 0, 0 Button #tab2.default, "", [DefaultButton], UL, -100, -100 'defaultbutton to read textbox textbox #tab2.textbox6, 10 ,29, 263,21 stylebits #tab2.sttxt1,_WS_DLGFRAME, 0, 0, 0 stylebits #tab2.sttxt2,_WS_DLGFRAME, 0, 0, 0 Stylebits #tab2, 0, 0, _WS_EX_CLIENTEDGE, 0 Stylebits #tab2.listbox2, _LBS_MULTIPLESEL,0, 0, 0 statictext #tab2.txt0, "1. Typ words you are looking for.. or a space to reveal combobox ", 10, 10, 400, 20 statictext #tab2.txt1, "2. Do some <Fine Tuning> when needed", 10, 75, 200, 20 statictext #tab2.txt2, "3. Doubleclick/Singleclick select/de-select and Display Helpfile", 10, 215, 300, 20 statictext #tab2.sttxt2, "Options: ", 220, 340, 200, 30 statictext #tab2.sttxt1, "", 10, 340, 200, 30 combobox #tab2.combobox1, oefBB$(, [combobox1DoubleClick], 10, 30, 280, 70 listbox #tab2.listbox2, oefBB$(, [listbox2DoubleClick], 10, 095, 280, 100 listbox #tab2.listbox3, dispHelpFile$(, [listbox3DoubleClick], 10, 235, 410, 100 button #tab2.button4," Clear ",[button4Click], UL, 300, 30, 122, 25 button #tab2.button5," Options... ",[button5Click], UL, 300, 60, 122, 25 button #tab2.button6,"Fine Tuning ",[button4Click], UL, 300, 100, 122, 25 button #tab2.button7," Search now ",[button7Click], UL, 300, 130, 121, 25 button #tab2.button8,"Rebuild dbase ",[button8Click], UL, 300, 170, 121, 26 button #tab2.button9,"Display Helpfile",[button9Click], UL, 10, 375, 130, 25 button #tab2.button10,"Print....",[button10Click], UL, 155, 375, 120, 25 button #tab2.button11," Cancel ",[quit], UL, 290, 375, 130, 25 open "" for window as #tab2 #tab2.textbox6 "!setfocus" #tab2.button10 "!disable" 'main program window for the TAB pages WindowWidth = 475:WindowHeight = 500 open "Help-subject: Liberty BASIC for Windows v4.04" for window as #1 #1 "trapclose [quit]" #1 "font ms_sans_serif 10" 'handles and initial setup of TABs hwndListbox1 = hwnd(#tab1.listbox1) hwndListbox2 = hwnd(#tab2.listbox2) hwndParent = hwnd(#1) 'retrieve window handle hTab1=hwnd(#tab1):hTab2=hwnd(#tab2) dim winTab(2) 'hold tab window handles in array winTab(0)=hTab1:winTab(1)=hTab2 'set popups to be children of main program window for i = 0 to 1 call SetParent hwndParent,winTab(i) next 'move child windows (init) gosub [clear] call MoveWindow hTab1, 20,40,430,410 ' Get window instance handle CallDLL #user32, "GetWindowLongA",_ hwndParent As ulong,_ 'parent window handle _GWL_HINSTANCE As long,_'flag to retrieve instance handle hInstance As ulong 'instance handle ' Create control style = _WS_CHILD or _WS_CLIPSIBLINGS or _WS_VISIBLE _ or TCS.MULTILINE calldll #user32, "CreateWindowExA",_ 0 As long,_ ' extended style "SysTabControl32" as ptr,_ ' class name "" as ptr,_ style as long,_ ' style 20 as long,_ ' left x 16 as long,_ ' top y 430 as long,_ ' width 430 as long,_ ' height hwndParent as ulong,_ ' parent hWnd 0 as long,_ hInstance as ulong,_ ' hInstance "" as ptr,_ hwndTab as ulong ' tab control handle 'set mask and fill struct members: TCITEM.mask.struct = TCIF.TEXT or TCIF.IMAGE TCITEM.iImage.struct = -1 'no image TCITEM.pszText$.struct = "Index " 'add first tab: ' call SendM hwndTab,TCM.INSERTITEMA,0,TCITEM 'Doesn't work!!!!! calldll #user32, "SendMessageA",_ hwndTab as ulong,_ TCM.INSERTITEMA as long,_ 0 as long,_ 'zero-based, so 0=first tab TCITEM as struct,_ ret as long 'add second tab: TCITEM.pszText$.struct = "Search" calldll #user32, "SendMessageA",_ hwndTab as ulong,_ TCM.INSERTITEMA as long,_ 1 as long,_ 'zero-based, so 1=second tab TCITEM as struct,_ ret as long calldll #gdi32, "GetStockObject",_ 0 as long, hFont as ulong 'was _DEFAULT_GUI_FONT 'set the font to the control: CallDLL #user32, "SendMessageA",_ hwndTab As ulong,_ 'tab control handle _WM_SETFONT As long,_ 'message hFont As ulong,_ 'handle of font 1 As long,_ 'repaint flag ret As long timer 400, [checkForTab] calldll #user32, "SetFocus",hwndParent as ulong,re as ulong wait [quit] timer 0 close #1:close #tab1:close #tab2 :end 'testing which TAB to display [checkForTab] 'see if selected tab is the same 'as previously selected tab and 'change controls if tab has changed 'get the current tab ID calldll #user32, "SendMessageA",_ hwndTab as ulong,_ 'tab control handle TCM.GETCURSEL as long,_ 'message to get current selection 0 as long, 0 as long,_ 'always 0's tabID as long 'returns selected tab ID if tabID <> oldTab then 'change page displayed oldTab = tabID 'for next check of selected tab gosub [clear] call MoveWindow winTab(tabID), 20,40,430,410 end if if tabID = 0 then [txtb6] if tabID = 1 then kg = 0 redim dispHelpFile$(500) goto [combb2] end if wait '-----------------TAB1-------------------------------------------- [txtb6] #tab1.textbox6 "!setfocus" #tab1.textbox6 "!contents? a$" if a$ = "" then wait a$ = Upper$(a$) for index = 1 to numFiles if left$(Upper$(helpItem$(index)),len(a$)) = a$ then #tab1.listbox1 "selectindex ";index call SendM hwndListbox1,msg2,index-1,0 'sent index to top exit for end if next wait [listbox1DoubleClick] #tab1.listbox1 "selection? sel$" #tab1.textbox6 sel$ [button2Click] #tab1.listbox1 "selectionindex? selIndex" #tab1.listbox1 "selection? sel$" #tab1.textbox6 sel$ 'run internet$ + " " + DefaultDir$ + "\lb4help\LibertyBASIC_4_web\html\"+helpItemFile$(selIndex) displayItem$ = helpDir$+helpItemFile$(selIndex) run "rundll32.exe url.dll,FileProtocolHandler " + displayItem$ 'thanks to Stefan wait '-----------------TAB2------------------------------------------- [combb2] #tab2.textbox6 "!contents? a$" if a$ = "" then #tab2.textbox6 "!setfocus" :wait for index = 1 to itemsInOef if left$(oefBB$(index),len(a$)) = a$ then #tab2.listbox2 "selectindex ";index call SendM hwndListbox2,msg2,index-1,0 'sent index to top exit for end if next wait '---------------Button EVENTS --------------------- [DefaultButton] sel$ = a$ goto[displayFound] 'display found in ... helpfile wait [button7Click] 'the <search now> button was clicked cnt = 0 :c2 = 0 for index = 1 to itemsInOef call SendM hwndListbox2,msg1,index-1,0 'get selected words if retSendM = 1 then cnt = cnt + 1 'number of seleted words totalSelItems$(cnt) = oefBB$(index) 'place selected words in array end if next index for i = 1 to numFiles open helpDir$ + helpItemFile$(i) for input as #file txt$ = INPUT$(#file, lof(#file)) c2 = 0 for c1 = 1 to cnt if instr(txt$,totalSelItems$(c1))> 0 then c2 = c2 + 1 next c1 if c2 = cnt then 'all selected words in the file kg = kg + 1 dispHelpFile$(kg) = "all ";cnt;" words match in file:";helpItem$(i) 'sel$? c2 = 0 end if close #file #tab2.listbox3 "reload" next #tab2.sttxt1 str$(kg) + " objects found" wait [listbox2DoubleClick] 'User double clicked on the listbox #tab2.listbox2 "selection? sel$" #tab2.combobox1 "!" [displayFound] for i = 1 to numFiles 'open helpDir$ + info$(i,0) for input as #file open helpDir$ + helpItemFile$(i) for input as #file txt$ = INPUT$(#file, lof(#file)) if instr(txt$,sel$)>0 then kg = kg + 1 dispHelpFile$(kg) = sel$ + " found in file:";helpItem$(i) end if close #file #tab2.listbox3 "reload" next #tab2.sttxt1 str$(kg) + " objects found" wait [listbox3DoubleClick] 'User double clicked on the listbox 'rem [button9Click] 'User clicked <DisplasyHelpfile> #tab2.listbox3 "selection? sel$" sel$ = mid$(sel$,instr(sel$,":")+ 1)'+ " " print sel$ if sel$ = "" then notice "Sorry empty" :wait for t = 1 to numFiles if helpItem$(t) = sel$ then selIndex = t print helpItemFile$(t) end if next t displayItem$ = helpDir$+helpItemFile$(selIndex) run "rundll32.exe url.dll,FileProtocolHandler " + displayItem$wait [combobox1DoubleClick] 'User selected with combobox#tab2.combobox1 "contents? sel$" print sel$ goto[displayFound] wait [button4Click] '<CLEAR> button was pressed #tab2.combobox1 "!" 'clear combobox #tab2.textbox6 "" 'clear the textbox call SendM hwndListbox2,msg3,0,-1 'clear all selected words in lb2 wait [button5Click] 'search options WindowWidth = 320 WindowHeight = 410 UpperLeftX=int((DisplayWidth-WindowWidth)/2) UpperLeftY=int((DisplayHeight-WindowHeight)/2) groupbox #dlgmain.groupbox2, "Search for words with", 10, 7, 295, 130 groupbox #dlgmain.groupbox1, "Start searching with", 10, 212, 295, 125 groupbox #dlgmain.groupbox6, "Display all words that starts with", 10, 142, 295, 65 button #dlgmain.button3,"OK",[okbutton], UL, 10, 347, 96, 25 button #dlgmain.button4,"Cancel",[dlg.quit], UL, 110, 347, 96, 25 button #dlgmain.button5,"File...",[filesbutton], UL, 210, 347, 96, 25 radiobutton #dlgmain.radiobutton7, "All words in random order", [r7Set], [r7Reset], 20, 27, 176, 25 radiobutton #dlgmain.radiobutton8, "At least one word found in doc", [r8Set], [r8Reset], 20, 47, 199, 25 radiobutton #dlgmain.radiobutton9, "All words in exact order", [r9Set], [r9Reset], 20, 67, 162, 25 checkbox #dlgmain.checkbox10, "Display matching word groups", [checkbox10Set], [checkbox10Reset], 60, 87, 205, 25 combobox #dlgmain.combobox11, array$(, [combobox11DoubleClick], 25, 167, 260, 100 radiobutton #dlgmain.radiobutton12, "RadioButton Caption", [r12Set], [r12Reset], 20, 242, 148, 25 radiobutton #dlgmain.radiobutton13, "RadioButton Caption", [r13Set], [r13Reset], 20, 262, 148, 25 checkbox #dlgmain.checkbox14, "CheckBox Caption", [checkbox14Set], [checkbox14Reset], 70, 287, 135, 25 open "Search Options:" for dialog_modal as #dlgmain print #dlgmain, "font ms_sans_serif 11" print #dlgmain, "trapclose [dlg.quit]" 'wait here for input event wait [checkbox10Set] 'Perform action for the groupbox named 'groupbox6' 'Insert your own code here wait [checkbox10Reset] 'Perform action for the groupbox named 'groupbox6' 'Insert your own code here wait [okbutton] 'Perform action for the button named 'button3' 'Insert your own code here wait '[cancelbutton] 'Perform action for the button named 'button4' 'Insert your own code here ' wait [filesbutton] 'Perform action for the button named 'button5' 'Insert your own code here wait [r7Set] 'Perform action for the radiobutton named 'radiobutton7' 'Insert your own code here wait [r7Reset] 'Perform action for the radiobutton named 'radiobutton7' 'Insert your own code here wait [r8Set] 'Perform action for the radiobutton named 'radiobutton8' 'Insert your own code here wait [r8Reset] 'Perform action for the radiobutton named 'radiobutton8' 'Insert your own code here wait [r9Set] 'Perform action for the radiobutton named 'radiobutton9' 'Insert your own code here wait [r9Reset] 'Perform action for the radiobutton named 'radiobutton9' 'Insert your own code here wait [combobox11DoubleClick] 'Perform action for the combobox named 'combobox11' 'Insert your own code here wait [r12Set] 'Perform action for the radiobutton named 'radiobutton12' 'Insert your own code here wait [r12Reset] 'Perform action for the radiobutton named 'radiobutton12' 'Insert your own code here wait [r13Set] 'Perform action for the radiobutton named 'radiobutton13' 'Insert your own code here wait [r13Reset] 'Perform action for the radiobutton named 'radiobutton13' 'Insert your own code here wait [checkbox14Set] 'Perform action for the checkbox named 'checkbox14' 'Insert your own code here wait [checkbox14Reset] 'Perform action for the checkbox named 'checkbox14' 'Insert your own code here wait [dlg.quit] 'End the program close #dlgmain wait '[button6Click] ' #tab2.combobox1 "!" 'wait [button8Click] notice "rebuilding OEF.txt ... again coming soon!" wait [clear] 'hide all windows for i = 0 to 1 '2 call MoveWindow winTab(i), 3000,3000 ,450,450 next return Function GetParent(hWnd) calldll #user32, "GetParent",hWnd as ulong,_ GetParent as ulong End Function Sub SetParent hWnd,hWndChild CallDLL #user32, "SetParent", hWndChild As uLong,_ hWnd As uLong, result As uLong style = _WS_CHILD or _WS_VISIBLE CallDLL #user32, "SetWindowLongA",_ hWndChild As ulong, _GWL_STYLE As long,_ style As Long, r As long End Sub Sub MoveWindow hWnd,x,y,w,h CallDLL #user32, "MoveWindow",hWnd As uLong,_ x As Long, y As Long,w As Long, h As Long,_ 1 As long, r As long End Sub Sub SendM handl,msg,Wp,Lp calldll #user32, "SendMessageA",_ handl as ulong,_ msg as long,_ Wp as long,_ Lp as long,_ retSendM as long End Sub function GetFolder$(Path$) pos = 1 GetFolder$ = Path$ while pos > 0 pos = instr(Path$, "\", pos) if pos > 0 then GetFolder$ = left$(Path$, pos) pos = pos + 1 end if wend end function function GetModuleFileName$() nSize = _MAX_PATH + 1 lpFilename$ = space$(nSize); CHR$(0) calldll #kernel32, "GetModuleFileNameA",_ hModule as uLong,_ lpFilename$ as ptr,_ nSize as uLong,_ result as uLong if result > 0 then GetModuleFileName$ = trim$(lpFilename$) end function '--------------------------------- data "#","#comctl32","#comdlg32","#gdi32","#kernel32","#shell32","#user32","#winmm" data "(View Graphics Window Commands)","(View Text Window Commands)","[branchLabel]" data "16-color icons","32-bit" data A,a,"A Simple Example" data ABS,"ABS( n )","absolute value",ACS,"ACS( n )","Add a Mask",addition data "Additional Commands",address,addsprite,Algebra,Alphanumeric,"AND",animate data API,"API call","API calls",APIs,APPEND,Application,"Application Programming Interface" data "arc cosine","arc sine","arc tangent",Arithmetic,array,arrays,"Arrays in Loops" data "Arrays with more than two dimensions",ARROW,"ASC( s$ )",ASCII,"ASCII table",ASN data "ASN( n )",assignment,"Associated File",async,asynch,ATN,"ATN( n )",Attributes data "Auto Indenting",autoresize data B,b,backcolor,background,BackgroundColor$,backgroundxy,BAK,BAS,"base 16","BASIC code","BEEP" data Binary,"Binary Access,Binary Files","binary numbers","BINARYBinary Files access",Bit data bitmap,bitwise,"Bitwise Operations","Block Conditionals",BMP,"BMPBUTTON","BMPBUTTON COMMANDS" data "BMPSAVE",bold,boolean,"Boolean Operators","BOOLEAN TRUTH TABLE",booleans,Boot,Border,box data boxfilled,Branch,"branch label","Branch Labels",BREAKPOINTS,Bug,"Built-in Dialogs" data "BUTTON","Button commands","by reference","by value",byref,Byte data C,c,"CALL","callback","Callbacks for API Functions","CALLDLL","Calling APIs and DLLs" data Calls,"CASE","CASE ELSE",Caveats,centersprite,"CHANGING THE BACKGROUND",characterInput data characters,"CHECKBOX","Checkbox Commands",CHR$,"CHR$( n )",circle,circlefilled data Class,Click,Clipboard,clock,"Close","CLOSE #h","cls",code,"COLLISION DETECTION",color data "Color and Size","COLORDIALOG","Colors and the Graphical User Interface" data "columnar printing",columns,"Combobox",ComboboxColor$,comdlg32,Command data "Command Reference A-C","Command Reference D-F","Command Reference G-K","Command Reference L-M" data "Command Reference N-P","Command Reference R-S","Command Reference T-Z","CommandLine$" data "commands for combobox","commands for listbox","comments","communications ports",compile data "compile progress",compiler,"Compiler Reporting",compiling,"Computer Program",Concatenation data conditional,conditions,configuration,"CONFIRM","Confirm on exit",Constants,contents,contents? data "Control Commands",Controls,"Controls - Menus, Buttons, Etc.","Controls and Events" data copy,COS,"COS( n )",cosine,"Creating a tokenized file","Creating an Application",CROSSHAIR,"CURSOR" data "Customizing the Liberty BASIC Editor",cut,cyclesprite data D,d,"-D","DATA","Data File",Database,"Date and Time Functions",Date$,"DATE$( )",days,Debug data DECHEX$,"Dechex$( )",decimal,Default,"Default Button","default printer",DefaultDir$,degrees data delete,delsegment,"Designate Sprites",Desktop,Dialog,"dialog box","Dialog","Default Button" data "dialog_fs","dialog_modal","dialog_nf","dialog_nf_fs","dialog_nf_modal","dialog_popup","DIM" data "DIM array( )",dimensioned,directory,disable,discard,Disk,"Disk Drive","disk file",DisplayHeight data DisplayWidth,"DisplayWidth and DisplayHeight",Distribution,divide,division,DLL,DLLs,"DO","DO LOOP" data Document,double,"DOUBLE QUOTE","Double-Click",down,DPI,"Drag (mouse)",drawbmp,"Drawing and Collision Detection" data "Drawing Segments","Drawn Objects","Drawn Text",drawsprites,Drive,Drives$,"DUMP","dynamic link library" data "Dynamic-Link-Libraries","Dynamic-Link-Library" data E,e,"e^n",EDIT,"edit menu",element,ellipse,ellipsefilled,"ELSE",embed,enable,"END","End Function","END IF" data "end of the file","END SELECT","ENTER key","EOF( #h )","Error","Error Log","Error Log Explained" data "Error Messages","Error.log","EVAL","EVAL$",evaluate,"evaluating BASIC code","evaluation statement" data Event,"Event Handlers","Event-Driven Programming","Example Programs","EXE",executable,"executable program" data "Exit","EXIT FOR","Exit Function","exit sub","EXIT WHILE","EXP( n )",Explorer,Expression,extension data F,f,FaceName,"field","FIELD Statement",file,"File Access","File Copy","File Operations","FILEDIALOG",Filename data "Filename Extension","files",fill,"Float divide by zero exception","floating point",flush,"Flushing Sprite Graphics" data Focus,Folder,font,"FONTDIALOG","FOR","FOR...NEXT","FOR/NEXT",ForegroundColor$,FreeForm,"function",functions data "Functions and subroutines","General Protection Faults",G,g,"GET","GET #h, n","getbmp","GETTRIM","GETTRIM #h, n" data Gigabyte,"GLOBAL","Global Variables",Glossary,go,GOLD,"gold license","GOSUB","GOSUB label","goto" data "GOTO label","Graphical User Interface","Graphicbox","GRAPHICBOX COMMANDS",graphics,"graphics_fs" data "graphics_fs_nsb","graphics_nf_nsb","graphics_nsb","GROUPBOX",GUI,"Gui Designer",H,h,handle,"Handle Variables" data "Hard Disk",Hardware,"hardware ports","HBMP( -name- )",hexadecimal,hexdec,"HEXDEC( -value- )",hide data Highlight,home,horizscrollbar,HOURGLASS,"How Do Sprites Work?","How to make API/DLL calls","How to Specify Fonts" data HWND,"HWND( #handle )",I,i,Icon,"Icon Editor",Identifier,"IF","IF...THEN",Images,indent data "Informational resources about APIs/DLLs",ini,"INI file",Inkey,Inkey$,"INP( )","INPUT","INPUT Multiple Items" data "Input to Arrays",INPUT$,"INPUT$( #h, n )",INPUTTO$,insert,install,Installing,"Installing Liberty BASIC" data INSTR,"INSTR(a$,b$,n)",INT,"INT( n )",integer,italic,J,j,Joy1button1,Joy1button2,Joy1x,Joy1y,Joy1z,joystick,joysticks data K,k,"Key Down","Key Up",keyboard,"Keyboard and Joystick","Keyboard input",Keystrokes,"Kill BASIC Apps" data "Kill BASIC Programs","KILL s$",L,l,"Lander.bas",LAYERING,LEFT$,"LEFT$( s$, n )",leftButtonDouble,leftButtonDown data leftButtonMove,leftButtonUp,"LEN","LEN( s$ )",length,Lesson,"lesson browser","LET var = expr" data "Liberty BASIC","Liberty BASIC Editor","Liberty BASIC Language","LIBERTY.EXE","line","line input",lines data "Listbox","ListboxColor$","Lite Debug",literal,"literal strings","literal value",Literals,"Load on startup" data "loadbmp",loc,"LOC( #h)","Local Variables","LOCATE","Locating Text","LOF( #h )",LOG,"LOG( n )",logarithm data "Logical Line Extension",long,"loop",Looping,"Low memory",LOWER$,"LOWER$( s$ )","LPRINT","LPRINTG3_4AL" data M,m,"main window","Main window columns/rows","mainwin","Mainwin Size",MAINWINDOW,"Making API and DLL Calls" data "Manipulating Characters","MAPHANDLE",Mask,MASKS,Mathematics,MAX,"MAX( )","Maximize Button","MB",memory data "MENU","Menu Bar",MID$,"MID$( )",middleButtonDouble,middleButtonDown,middleButtonMove,middleButtonUp data MIDI,MIDIPOS,milliseconds,MIN,"MIN( )",MINIMIZE,"Minimize Button","MKDIR( )","mm/dd/yy","mm/dd/yyyy" data "MOD",mode,modified?,Monitor,mouse,mouseMove,MouseX,MouseY,move,multiplication,Multitasking data "My Computer","NAME a$ AS b$",N,n,"natural log","natural logarithm","Negative numbers","NEXT","NOMAINWIN" data none,NORMAL,north,NOT,"NOTICE",Notification,"ntport.dll","ntport2.reg",Numbers,"Numbers and Strings" data numeric,"numeric expression","Numeric Expressions","Numeric variables",O,o,"ON ERROR","ON ERROR GOTO" data "ONCOMERROR","open","OPEN COMn: ...open a communications port for reading/writing" data "Operating System",Operations,"OR",Order,origin,origin?,OS,"OS Error 16r582","OUT","OUT port, byte" data "OUTPUT","outside the quotation marks",Overview,"Parallel Port","Passing by Reference" data "Passing strings into API/DLL calls",P,p,paste,Path,"Path and Filenames",PAUSE,"Pauses and Timing",PI,pie,piefilled data Pixel,place,Platform$,"PLAYMIDI","PLAYWAVE",Pointer,"POPUPMENU",port,"Port I/O","Port I/OPortI/O",position data posxy,power,preferences,"PRINT","PRINT USING",PrintCollate,PrintCopies,printer,"PRINTERDIALOG",PrinterFont$ data PrinterName$,"process user events","Programming Language","PROMPT",ptr,"PUT","PUT #h, n","quotation marks" data "-R",R,r,radians,"RADIOBUTTON",RAM,random,"random access","random access file","Random Access Files","Random Files" data "random number","random number generator","RANDOMIZE","read","READ and DATA","Reading DATA into Arrays" data "Reading Mouse Events and Keystrokes","READJOYSTICK",Reboot,record,Recursion,"recursive function","REDIM" data redraw,REFRESH,register,"Registering Liberty BASIC","Relative Path","REM",remainder,removesprite,rename data "Reserved Word","Reserved Word List",resize,"Resize.bas",RESIZEHANDLER,Resolution,"RESTORE","Restore Button" data "Resume","RETURN",RIGHT$,"RIGHT$( s$, n )",rightButtonDouble,rightButtonDown,rightButtonMove,rightButtonUp data "Right-Click","Right-Click Menu","Right-Drag","RMDIR( )",RND,"RND( n )",ROM,rows,rule,"run","RUN s$, mode" data "Running a Liberty BASIC program","runtime engine","Runtime Icon",S,s,"sample programs",Save,"Save As","SCAN" data "Scientific Notation","Scroll Arrows","Scroll Bar","scroll bars",SCROLLING,"seek",segment,"select","SELECT CASE" data "Select Case Statement",selectall,selection?,semicolons,"Sending Commands","Sequential Access","sequential file" data "Sequential File Access","Sequential Files","serial communications","serial communications port",set,setfocus data "Setup Menu",Shell,shell32,short,"Short Filename",SHOW,SHOWMAXIMIZED,SHOWMINIMIZED,SHOWMINNOACTIVE,SHOWNA data SHOWNOACTIVE,SHOWNORMAL,SILVER,"similar variables","Simple Demo Program",SIN,"SIN( n )",sine,size data "Size and Placement of Windows","Size in Pixels","Size in Points","Sizing Handle",Software,"sort" data "Sorting Arrays",sound,Sounds,space,"space characters",SPACE$,"SPACE$( n )returns a string of n spaces" data spaces,"Special Globals",Spreadsheet,"Sprite Commands","Sprite Properties","Sprite Table of Contents" data spritecollides,spriteimage,spritemovexy,spriteoffset,spriteorient,spriteround,spritescale,spritetoback data spritetofront,spritetravelxy,spritevisible,spritexy,spritexy?,SQR,"SQR( n )","square root","Start with the Background" data Statement,"Statictext","Statictext Commands","Status Bar","STEP","Step by Step","Step Out","Step Over","Stop" data "STOPMIDI",STR$,"STR$( n )",strikeout,string,"string expression","String Literals","string variable" data strings,"Strings and Text",stringwidth?,"struct",Structs,structure,style,"STYLE CONSTANTS","STYLEBITS","SUB" data Subfolder,Subprogram,subroutine,subroutines,subs,subtraction,support,svga,"SW_HIDE",sync,synch,syntax,"syntax coloring" data "Syntax error","system clock",T,t,TAB,"TAB( n )",TAN,"TAN( n )",tangent,Taskbar,terminate,"Testing for file existence" data text,"Text and Characters","Text mode display","text_fs","text_nsb","text_nsb_ins","Textbox","Textbox commands" data TextboxColor$,"Texteditor","texteditor commands",TexteditorColor$,"The Error.log file","The Liberty BASIC Editor" data "The Preferences Dialog","THEN","third-party editor",time,Time$,"TIME$( )","Timer","Title Bar","Titlebar",tkn data Tokenize,"tokenized program",Toolbar,"TRACE","TRACE n",trapclose,"Trapping the close event",Trigonometry,TRIM$ data "TRIM$( s$ )",TroubleShooting,TRUE,turn,"Turtle Graphics",TXCOUNT,TYPE,"Type mismatch error",types,U,u,ulong,underscore data "Understanding Syntax",uninstall,"Uninstalling Liberty BASIC","unloadbmp",Unzip,up,UPPER$,"UPPER$( s$ )" data uppercase,UpperLeftX,"UpperLeftX and UpperLeftY",UpperLeftY,usage,"user input",ushort,USING,"Using a different code editor" data "Using hexadecimal values","Using Inkey$","Using the Debugger","Using the Runtime Engine","Using types with STRUCT and CALLDLL" data "Using virtual key constants with Inkey$","USING( )",V,v,VAL,"VAL( s$ )",Variable,"variable names",variables,version data Version$,vertscrollbar,vga,"Video drivers","virtual keycodes","Virtual Keys",void,VSTUB,W,w,"wait",wav,"WEND" data "What are APIs/DLLs?","What is a Sprite?","What's New!",when,"when characterInput","while","WHILE...WEND","WHILE/WEND" data "whole number",window,"Window and Dialog Commands","Window Types","window_nf","window_popup",WindowHeight,Windows data "Windows API","Windows handle","Windows timer",WindowWidth,"WindowWidth and WindowHeight",winmm,Winstring,word data "WORD$( s$, n )","World of Liberty BASIC",write,"Writing your own Programs",WYSIWYG,xga,"XOR","yyyy/mm/dd","Zipped file" data "zntport.sys" data zzzz [[code]]