Older Version Newer Version

GordonR 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.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]]