home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
S12780.ZIP
/
UIDEMO.BAS
< prev
next >
Wrap
BASIC Source File
|
1990-10-25
|
46KB
|
1,262 lines
' ===========================================================================
'
' UIDEMO.BAS Copyright (c) 1989-1990 Microsoft Corporation
'
' ===========================================================================
' ===========================================================================
' Decls, includes, and dimensions
' ===========================================================================
DEFINT A-Z
DECLARE SUB AboutDemo ()
DECLARE SUB AboutUIP ()
DECLARE SUB AboutMouse ()
DECLARE SUB AboutAccess ()
DECLARE SUB AboutQuick ()
DECLARE SUB AboutWindows ()
DECLARE SUB ColorDisplay ()
DECLARE SUB DemoAlert ()
DECLARE SUB DemoDialog ()
DECLARE SUB DemoDialogEZ ()
DECLARE SUB DemoFileNameListBox ()
DECLARE SUB DemoListBox ()
DECLARE SUB DemoWindow ()
DECLARE SUB DemoScrollBar ()
DECLARE SUB DemoResize ()
DECLARE SUB MonoDisplay ()
DECLARE SUB SetupDesktop ()
DECLARE SUB SetupMenu ()
DECLARE FUNCTION GetFileCount% (FileSpec$)
'$INCLUDE: 'general.bi'
'$INCLUDE: 'mouse.bi'
'$INCLUDE: 'menu.bi'
'$INCLUDE: 'window.bi'
COMMON SHARED /uitools/ GloMenu AS MenuMiscType
COMMON SHARED /uitools/ GloTitle() AS MenuTitleType
COMMON SHARED /uitools/ GloItem() AS MenuItemType
COMMON SHARED /uitools/ GloWindow() AS windowType
COMMON SHARED /uitools/ GloButton() AS buttonType
COMMON SHARED /uitools/ GloEdit() AS EditFieldType
COMMON SHARED /uitools/ GloStorage AS WindowStorageType
COMMON SHARED /uitools/ GloWindowStack() AS INTEGER
COMMON SHARED /uitools/ GloBuffer$()
DIM GloTitle(MAXMENU) AS MenuTitleType
DIM GloItem(MAXMENU, MAXITEM) AS MenuItemType
DIM GloWindow(MAXWINDOW) AS windowType
DIM GloButton(MAXBUTTON) AS buttonType
DIM GloEdit(MAXEDITFIELD) AS EditFieldType
DIM GloWindowStack(MAXWINDOW) AS INTEGER
DIM GloBuffer$(MAXWINDOW + 1, 2)
DIM SHARED DisplayType AS INTEGER
' =======================================================================
' Initialize Demo
' =======================================================================
MenuInit
WindowInit
MouseShow
MonoDisplay
' =======================================================================
' Show Opening alert window
' =======================================================================
a$ = "User Interface Toolbox Demo|"
a$ = a$ + "for|"
a$ = a$ + "Microsoft BASIC 7.1 Professional Development System|"
a$ = a$ + "Copyright (c) 1989-1990 Microsoft Corporation|"
x = Alert(4, a$, 9, 10, 14, 70, "Color", "Monochrome", "")
IF x = 1 THEN
DisplayType = TRUE
ColorDisplay
END IF
' =======================================================================
' Main Loop : Stay in loop until DemoFinished set to TRUE
' =======================================================================
DemoFinished = FALSE
WHILE NOT DemoFinished
kbd$ = MenuInkey$
WHILE MenuCheck(2)
GOSUB MenuTrap
WEND
WEND
' =======================================================================
' End Program
' =======================================================================
MouseHide
COLOR 15, 0
CLS
END
' ===========================================================================
' If a menu event occured, call the proper demo, or if Exit, set demoFinished
' ===========================================================================
MenuTrap:
menu = MenuCheck(0)
item = MenuCheck(1)
SELECT CASE menu
CASE 1
SELECT CASE item
CASE 1: DemoAlert
CASE 2: DemoDialogEZ
CASE 3: DemoDialog
CASE 4: DemoListBox
CASE 5: DemoFileNameListBox
CASE 6: DemoScrollBar
CASE 7: DemoWindow
CASE 8: DemoResize
CASE 10: DemoFinished = TRUE
END SELECT
CASE 2
SELECT CASE item
CASE 1: ColorDisplay
CASE 2: MonoDisplay
END SELECT
CASE 3
SELECT CASE item
CASE 1: AboutDemo
CASE 2: AboutUIP
CASE 3: AboutWindows
CASE 4: AboutMouse
CASE 5: AboutAccess
CASE 6: AboutQuick
END SELECT
CASE ELSE
END SELECT
RETURN
SUB AboutAccess
a$ = " Access Keys||"
a$ = a$ + "Access keys are the keys on the menu bar that are highlighted|"
a$ = a$ + "when you press the Alt key. If you press a letter that is|"
a$ = a$ + "highlighted in a menu title, that menu will be selected.||"
a$ = a$ + "Once a pull-down menu is displayed, each menu item also has a|"
a$ = a$ + "highlighted letter associated with each choice. Press the|"
a$ = a$ + "letter that corresponds to the menu item you want to select.||"
a$ = a$ + "If, after you press Alt, you change your mind, press the Alt|"
a$ = a$ + "key again to cancel."
junk = Alert(1, a$, 7, 9, 20, 69, "", "", "")
END SUB
SUB AboutDemo
a$ = " About This Demo||"
a$ = a$ + "Running this program provides a visual demonstration of most|"
a$ = a$ + "of the features implemented in the new User Interface Toolbox|"
a$ = a$ + "for the BASIC Compiler 7.1.||"
a$ = a$ + "In addition to serving as a demo of toolbox features, the|"
a$ = a$ + "source code that makes up this program can also serve as a|"
a$ = a$ + "programming example of how to implement these features in|"
a$ = a$ + "your programs. While the demo is relatively simple, it does|"
a$ = a$ + "illustrate almost all the features available."
junk = Alert(1, a$, 7, 9, 19, 69, "", "", "")
END SUB
SUB AboutMouse
a$ = " Using the Mouse||"
a$ = a$ + "Virtually all operations in the User Interface Toolbox can|"
a$ = a$ + "be accomplished using the mouse. Move the mouse cursor to|"
a$ = a$ + "whatever you want to select and press the left button.||"
a$ = a$ + "In addition to being able to make a choice with a mouse,|"
a$ = a$ + "you can also perform a number of operations on windows.|"
a$ = a$ + "Using the mouse you can close, move, or resize windows|"
a$ = a$ + "depending on the particular features of the window that is|"
a$ = a$ + "active."
junk = Alert(1, a$, 7, 9, 19, 69, "", "", "")
END SUB
SUB AboutQuick
a$ = " Quick Keys||"
a$ = a$ + "Quick keys are optional keys that you can define in addition|"
a$ = a$ + "to the normal access keys that must be specified when you|"
a$ = a$ + "set up the individual menu items.||"
a$ = a$ + "Quick keys normally reduce selection of a menu item to one|"
a$ = a$ + "keystroke. For example, this demo uses function keys F1 thru|"
a$ = a$ + "F8 to select menu choices that demonstrate different features|"
a$ = a$ + "of the User Interface Toolbox. Additionally, Ctrl-X is the|"
a$ = a$ + "Quick key that exits this demonstration program."
junk = Alert(1, a$, 7, 9, 19, 69, "", "", "")
END SUB
SUB AboutUIP
a$ = " About the User Interface||"
a$ = a$ + "The user interface provided with this toolbox is designed to|"
a$ = a$ + "provide much the same functionality as that found in the QBX|"
a$ = a$ + "programming environment. The menus, check boxes, option|"
a$ = a$ + "buttons, and other interface features operate similarly to|"
a$ = a$ + "their QBX counterparts. ||"
a$ = a$ + "If you know how to navigate QBX, you know how to navigate|"
a$ = a$ + "the interface provided by the User Interface Toolbox."
junk = Alert(1, a$, 7, 9, 18, 69, "", "", "")
END SUB
SUB AboutWindows
a$ = " About the Windows||"
a$ = a$ + "Several border characters used by the windows in the User|"
a$ = a$ + "Interface Toolbox have special significance. Any window that|"
a$ = a$ + "has a '=' in the upper-left corner can be closed by selecting|"
a$ = a$ + "that character with the mouse. Windows with the '░' character|"
a$ = a$ + "across the window's top row can be moved around the screen by|"
a$ = a$ + "selecting that area with the mouse. The '+' character in the|"
a$ = a$ + "lower-right corner means that the window can be resized by|"
a$ = a$ + "selecting the '+' character with the mouse.||"
a$ = a$ + "Note that none of these features can be accessed without a|"
a$ = a$ + "mouse. "
junk = Alert(1, a$, 7, 9, 21, 69, "", "", "")
END SUB
SUB ColorDisplay
DisplayType = TRUE
MouseHide
SetupMenu
MenuSetState 2, 1, 2
MenuSetState 2, 2, 1
SetupDesktop
MenuShow
MouseShow
END SUB
SUB DemoAlert
' =======================================================================
' Simple little demo of how easy alerts are to use.
' =======================================================================
a$ = "|"
a$ = a$ + "This is an Alert Box.| |"
a$ = a$ + "It was created using a simple one|"
a$ = a$ + "line command. Notice the buttons|"
a$ = a$ + "below. They are user definable|"
a$ = a$ + "yet their spacing is automatic."
B$ = "You Selected OK"
C$ = "You Selected Cancel"
SELECT CASE Alert(4, a$, 6, 20, 15, 60, "OK", "Cancel", "")
CASE 1
x = Alert(4, B$, 10, 25, 12, 55, "OK", "", "")
CASE 2
x = Alert(4, C$, 10, 25, 12, 55, "OK", "", "")
END SELECT
END SUB
SUB DemoDialog
' =======================================================================
' This is about as complex as they get. As you can see it is still very
' simple - just a lot bigger. This sub exactly duplicates the
' functionality of the QuickBASIC Search-Change dialog box.
' =======================================================================
' =======================================================================
' Open Window, place a horizontal line on row 13
' =======================================================================
WindowOpen 1, 6, 11, 19, 67, 0, 7, 0, 7, 15, FALSE, FALSE, FALSE, TRUE, 1, ""
WindowLine 13
' =======================================================================
' Print the text, and boxes for the edit fields
' =======================================================================
WindowLocate 2, 2
WindowPrint 2, "Find What:"
WindowBox 1, 14, 3, 56
WindowLocate 5, 2
WindowPrint 2, "Change To:"
WindowBox 4, 14, 6, 56
' =======================================================================
' Print the title of the window -- This overides the string in WindowOpen
' =======================================================================
WindowLocate 0, 26
WindowPrint 1, " Change "
WindowBox 8, 32, 12, 56
' =======================================================================
' Open Edit fields
' =======================================================================
search$ = ""
replace$ = ""
EditFieldOpen 1, search$, 2, 15, 0, 0, 40, 39
EditFieldOpen 2, replace$, 5, 15, 0, 0, 40, 39
' =======================================================================
' Open all buttons
' =======================================================================
ButtonOpen 1, 1, "Match Upper/Lowercase", 9, 2, 0, 0, 2
ButtonOpen 2, 1, "Whole Word", 10, 2, 0, 0, 2
ButtonOpen 3, 1, "1. Active Window", 9, 34, 0, 0, 3
ButtonOpen 4, 2, "2. Current Module", 10, 34, 0, 0, 3
ButtonOpen 5, 1, "3. All Modules", 11, 34, 0, 0, 3
ButtonOpen 6, 2, "Find and Verify", 14, 2, 0, 0, 1
ButtonOpen 7, 1, "Change All", 14, 22, 0, 0, 1
ButtonOpen 8, 1, "Cancel", 14, 38, 0, 0, 1
ButtonOpen 9, 1, "Help", 14, 49, 0, 0, 1
' =======================================================================
' Set initial states to match initial button settings
' =======================================================================
MatchState = FALSE
WordState = FALSE
searchState = 2
pushButton = 1
currButton = 0
currEditField = 1
' =======================================================================
' Do until exitFlag is set
' =======================================================================
ExitFlag = FALSE
WHILE NOT ExitFlag
WindowDo currButton, currEditField
SELECT CASE Dialog(0)
CASE 0, 3, 4, 5, 20
' ==============================================================
' If edit field clicked, assign currEditField to Dialog(2)
' ==============================================================
CASE 2
currButton = 0
currEditField = Dialog(2)
' ==============================================================
' If escape is hit, set pushbutton = 0 and exit flag
' ==============================================================
CASE 9 '(Escape)
pushButton = 3
ExitFlag = TRUE
' ==============================================================
' If return is hit, perform action based on the current button
' Button 9 is the help button. In that case, show help, else just
' exit
' ==============================================================
CASE 6
SELECT CASE currButton
CASE 9
a$ = "Sample Help Window"
ButtonSetState pushButton + 5, 1
pushButton = 4
ButtonSetState pushButton + 5, 2
junk = Alert(4, a$, 7, 9, 19, 69, "", "", "")
CASE ELSE
ExitFlag = TRUE
END SELECT
' ==============================================================
' A Button was pushed with mouse. Perform the desired action
' based on Button
' ==============================================================
CASE 1
currButton = Dialog(1)
currEditField = 0
SELECT CASE currButton
CASE 1
MatchState = NOT MatchState
ButtonToggle 1
CASE 2
WordState = NOT WordState
ButtonToggle 2
CASE 3, 4, 5
ButtonSetState searchState + 2, 1
searchState = Dialog(1) - 2
ButtonSetState searchState + 2, 2
CASE 6, 7, 8
pushButton = Dialog(1) - 5
ExitFlag = TRUE
CASE 9
a$ = "Sample Help Window"
ButtonSetState pushButton + 5, 1
pushButton = Dialog(1) - 5
ButtonSetState pushButton + 5, 2
junk = Alert(4, a$, 7, 9, 19, 69, "", "", "")
CASE ELSE
END SELECT
' ==============================================================
' Tab was hit. Depending upon the current button, or current edit field,
' assign the new values to currButton, and currEditField
' ==============================================================
CASE 7 'tab
SELECT CASE currButton
CASE 0
SELECT CASE currEditField
CASE 1
currEditField = 2
CASE ELSE
currButton = 1
currEditField = 0
END SELECT
CASE 1
currButton = 2
CASE 6, 7, 8
currButton = currButton + 1
ButtonSetState pushButton + 5, 1
pushButton = currButton - 5
ButtonSetState pushButton + 5, 2
CASE 3, 4, 5
currButton = 6
CASE 2
currButton = 2 + searchState
CASE 9
currButton = 0
ButtonSetState pushButton + 5, 1
pushButton = 1
ButtonSetState pushButton + 5, 2
currEditField = 1
END SELECT
' ==============================================================
' Same for Back Tab, only reverse.
' ==============================================================
CASE 8 'back tab
SELECT CASE currButton
CASE 0
SELECT CASE currEditField
CASE 1
currButton = 9
ButtonSetState pushButton + 5, 1
pushButton = currButton - 5
ButtonSetState pushButton + 5, 2
currEditField = 0
CASE 2
currEditField = 1
END SELECT
CASE 1
currButton = 0
currEditField = 2
CASE 7, 8, 9
currButton = currButton - 1
ButtonSetState pushButton + 5, 1
pushButton = currButton - 5
ButtonSetState pushButton + 5, 2
CASE 3, 4, 5
currButton = 2
CASE 6
currButton = 2 + searchState
CASE 2
currButton = 1
END SELECT
' ==============================================================
' Up arrow only affects buttons 1,2,3,4,5 (the radial and check
' buttons)
' ==============================================================
CASE 10 'up arrow
SELECT CASE currButton
CASE 1
IF NOT MatchState THEN
MatchState = TRUE
ButtonToggle 1
END IF
CASE 2
IF NOT WordState THEN
WordState = TRUE
ButtonToggle 2
END IF
CASE 3
ButtonSetState searchState + 2, 1
searchState = 3
currButton = 5
ButtonSetState searchState + 2, 2
CASE 4, 5
ButtonSetState searchState + 2, 1
searchState = searchState - 1
currButton = currButton - 1
ButtonSetState searchState + 2, 2
END SELECT
' ==============================================================
' Same with down arrow, only reverse
' ==============================================================
CASE 11 'down
SELECT CASE currButton
CASE 1
IF MatchState THEN
MatchState = NOT MatchState
ButtonToggle 1
END IF
CASE 2
IF WordState THEN
WordState = NOT WordState
ButtonToggle 2
END IF
CASE 3, 4
ButtonSetState searchState + 2, 1
searchState = searchState + 1
currButton = currButton + 1
ButtonSetState searchState + 2, 2
CASE 5
ButtonSetState searchState + 2, 1
searchState = 1
currButton = 3
ButtonSetState searchState + 2, 2
END SELECT
' ==============================================================
' Left arrow only affects button 1 and 2 (the check buttons)
' ==============================================================
CASE 12 'Left Arrow
SELECT CASE currButton
CASE 1
IF NOT MatchState THEN
MatchState = TRUE
ButtonToggle 1
END IF
CASE 2
IF NOT WordState THEN
WordState = TRUE
ButtonToggle 2
END IF
CASE 3
ButtonSetState searchState + 2, 1
searchState = 3
currButton = 5
ButtonSetState searchState + 2, 2
CASE 4, 5
ButtonSetState searchState + 2, 1
searchState = searchState - 1
currButton = currButton - 1
ButtonSetState searchState + 2, 2
END SELECT
' ==============================================================
' Right arrow only affects button 1 and 2 (the check buttons)
' ==============================================================
CASE 13 'Right Arrow
SELECT CASE currButton
CASE 1
IF MatchState THEN
MatchState = NOT MatchState
ButtonToggle 1
END IF
CASE 2
IF WordState THEN
WordState = NOT WordState
ButtonToggle 2
END IF
CASE 3, 4
ButtonSetState searchState + 2, 1
searchState = searchState + 1
currButton = currButton + 1
ButtonSetState searchState + 2, 2
CASE 5
ButtonSetState searchState + 2, 1
searchState = 1
currButton = 3
ButtonSetState searchState + 2, 2
END SELECT
' ==============================================================
' Space will toggle a check button, or select a push button (including help)
' ==============================================================
CASE 14 'space
SELECT CASE currButton
CASE 1
MatchState = NOT MatchState
ButtonToggle 1
CASE 2
WordState = NOT WordState
ButtonToggle 2
CASE 6, 7, 8
pushButton = currButton - 5
ExitFlag = TRUE
CASE 9
a$ = "Sample Help Window"
ButtonSetState pushButton + 5, 1
pushButton = 4
ButtonSetState pushButton + 5, 2
junk = Alert(4, a$, 7, 9, 19, 69, "", "", "")
CASE ELSE
END SELECT
CASE ELSE
END SELECT
WEND
' =======================================================================
' Prepare data for final alert box that says what the final state was.
' =======================================================================
search$ = EditFieldInquire(1)
replace$ = EditFieldInquire(2)
WindowClose 1
IF pushButton = 3 THEN
a$ = "You Selected CANCEL"
x = Alert(4, a$, 10, 25, 12, 55, "OK", "", "")
ELSE
IF pushButton = 1 THEN
a$ = "You selected VERIFY. Here are your other selections:| |"
ELSE
a$ = "You selected CHANGE ALL. Here are your other selections:| |"
END IF
IF MatchState THEN
a$ = a$ + " Match Upper/Lowercase = Yes|"
ELSE
a$ = a$ + " Match Upper/Lowercase = No|"
END IF
IF WordState THEN
a$ = a$ + " Whole Word = Yes|"
ELSE
a$ = a$ + " Whole Word = No|"
END IF
SELECT CASE searchState
CASE 1: a$ = a$ + " Search space = Active Window|"
CASE 2: a$ = a$ + " Search space = Current Module|"
CASE 3: a$ = a$ + " Search space = All Modules|"
END SELECT
a$ = a$ + " Search string : " + search$ + "|"
a$ = a$ + " Replace string: " + replace$ + "|"
x = Alert(2, a$, 7, 11, 15, 69, "OK", "", "")
END IF
END SUB
SUB DemoDialogEZ
' =======================================================================
' Open Window, write text, and open button and edit field
' =======================================================================
WindowOpen 1, 8, 20, 13, 60, 0, 7, 0, 7, 15, FALSE, FALSE, FALSE, TRUE, 1, ""
WindowLocate 2, 2
WindowPrint 2, "Your Name:"
WindowBox 1, 14, 3, 38
EditFieldOpen 1, "", 2, 15, 0, 0, 23, 22
WindowLine 5
ButtonOpen 1, 2, "OK", 6, 17, 0, 0, 1
' =======================================================================
' Set initial state + go into main loop
' =======================================================================
currButton = 0
currEditField = 1
ExitFlag = FALSE
WHILE NOT ExitFlag
WindowDo currButton, currEditField
SELECT CASE Dialog(0)
CASE 1, 6 'Button, or Enter, exit loop
ExitFlag = TRUE
CASE 2 'EditField, switch to edit field
currButton = 0
currEditField = 1
CASE 7, 8 'tab and backTab, flip/flop state
IF currButton = 1 THEN
currButton = 0
currEditField = 1
ELSE
currButton = 1
currEditField = 0
END IF
CASE 14 'space - if on button then exit
IF currButton = 1 THEN
ExitFlag = TRUE
END IF
CASE 9 'escape
WindowClose 1
EXIT SUB
CASE ELSE
END SELECT
WEND
' =======================================================================
' Assign the variable before closing the window, and close the window
' =======================================================================
yourName$ = EditFieldInquire$(1)
WindowClose 1
IF LEN(yourName$) <> 0 THEN
junk = Alert(4, "Hello " + yourName$ + ".", 10, 20, 12, 60, "OK", "", "")
ELSE
junk = Alert(4, "I understand. You wish to remain anonymous!", 10, 15, 12, 65, "OK", "", "")
END IF
END SUB
SUB DemoFileNameListBox
WindowOpen 1, 8, 20, 15, 60, 0, 7, 0, 7, 15, FALSE, FALSE, FALSE, TRUE, 1, ""
WindowLocate 2, 4
WindowPrint 4, "Enter a file specification:"
WindowBox 3, 4, 5, 38
EditFieldOpen 1, "*.*", 4, 5, 0, 0, 23, 22
WindowLine 7
ButtonOpen 1, 2, "OK", 8, 17, 0, 0, 1
' =======================================================================
' Set initial state + go into main loop
' =======================================================================
currButton = 0
currEditField = 1
ExitFlag = FALSE
WHILE NOT ExitFlag
WindowDo currButton, currEditField
SELECT CASE Dialog(0)
CASE 1, 6 'Button, or Enter, exit loop
ExitFlag = TRUE
CASE 2 'EditField, switch to edit field
currButton = 0
currEditField = 1
CASE 7, 8 'tab and backTab, flip/flop state
IF currButton = 1 THEN
currButton = 0
currEditField = 1
ELSE
currButton = 1
currEditField = 0
END IF
CASE 9 'escape
WindowClose 1
EXIT SUB
CASE 14 'space - if on button then exit
IF currButton = 1 THEN
ExitFlag = TRUE
END IF
CASE ELSE
END SELECT
WEND
' =======================================================================
' Assign the variable before closing the window, and close the window
' =======================================================================
FileSpec$ = EditFieldInquire$(1)
' =======================================================================
' Make sure its a valid file name
' =======================================================================
delimit = INSTR(FileSpec$, ".")
IF delimit THEN
fileName$ = LEFT$(FileSpec$, delimit - 1)
fileExt$ = RIGHT$(FileSpec$, LEN(FileSpec$) - (delimit))
ELSE
fileName$ = FileSpec$
fileExt$ = ""
END IF
IF LEN(FileSpec$) = 0 OR LEN(fileName$) > 8 OR LEN(fileExt$) > 3 THEN
WindowClose 1
junk = Alert(4, "You didn't enter a valid file specification.", 10, 15, 12, 62, "OK", "", "")
EXIT SUB
END IF
FileCount = GetFileCount(FileSpec$)
IF FileCount THEN
REDIM FileList$(FileCount)
ELSE
WindowClose 1
junk = Alert(4, "No match to your file specification could be found.", 10, 10, 12, 70, "OK", "", "")
EXIT SUB
END IF
FileList$(1) = DIR$(FileSpec$)
FOR Indx = 2 TO FileCount
FileList$(Indx) = DIR$
NEXT Indx
x = ListBox(FileList$(), UBOUND(FileList$))
SELECT CASE x
CASE 0
junk = Alert(4, "You selected CANCEL", 10, 25, 12, 55, "OK", "", "")
CASE ELSE
junk = Alert(4, "You selected " + FileList$(x), 10, 25, 12, 55, "OK", "", "")
END SELECT
WindowClose 1
END SUB
SUB DemoListBox
REDIM x$(30), y$(30)
x$(1) = "Orange": y$(1) = "Orange you glad I didn't say Banana?"
x$(2) = "Butter": y$(2) = "Try margarine! less cholesterol"
x$(3) = "Corn": y$(3) = "Some people call it maize."
x$(4) = "Potato": y$(4) = "Wouldn't you prefer stuffing?"
x$(5) = "Grape": y$(5) = "Grape balls of fire!"
x$(6) = "Cherry": y$(6) = "Don't chop down the tree!"
x$(7) = "Lettuce": y$(7) = "Two heads are better than one."
x$(8) = "Lima bean": y$(8) = "Who's Lima? and why do I have her beans?"
x$(9) = "Carrot": y$(9) = "What's up Doc?"
x$(10) = "Rice": y$(10) = "Yes, but can you use chopsticks?"
x$(11) = "Steak": y$(11) = "Ooo.. Big spender."
x$(12) = "Meatloaf": y$(12) = "It must be Thursday."
x$(13) = "Stuffing": y$(13) = "Wouldn't you prefer potatoes?"
x$(14) = "Wine": y$(14) = "Remember: 'Party Responsibly.'"
x$(15) = "Pea": y$(15) = "Comes with the princess."
x$(16) = "Gravy": y$(16) = "like home made! (Only no lumps)"
x$(17) = "Pancake": y$(17) = "Three for a dollar!"
x$(18) = "Waffle": y$(18) = "Syrup on your waffle sir?"
x$(19) = "Broccoli": y$(19) = "Little trees..."
x$(20) = "Oatmeal": y$(20) = "Yuck.."
x = ListBox(x$(), 20)
SELECT CASE x
CASE 0
y = Alert(4, "You Selected Cancel", 10, 25, 12, 55, "OK", "", "")
CASE ELSE
y = Alert(4, y$(x), 10, 38 - LEN(y$(x)) \ 2, 12, 43 + LEN(y$(x)) \ 2, "OK", "", "")
END SELECT
END SUB
SUB DemoResize
' =======================================================================
' Define Window's text string
' =======================================================================
REDIM x$(19)
x$(1) = "Resize Me! Hello there! Welcome to the wonderful world"
x$(2) = "of Windows. This demo shows how BASIC programmers can"
x$(3) = "use a re-sizable window in their own applications."
x$(4) = ""
x$(5) = "This demo consists of a single window (this window) which"
x$(6) = "can be moved, closed, or re-sized. When the user resizes"
x$(7) = "a window, an event code of 5 is returned. Upon receiving"
x$(8) = "the event code, the programmer can then do whatever is"
x$(9) = "needed to refresh the window. "
x$(10) = ""
x$(11) = "The text in this window simply truncates when the window"
x$(12) = "is made smaller, but text can be made to wrap either by"
x$(13) = "character, or at the spaces between words. The choice is"
x$(14) = "the programmer's."
x$(15) = ""
x$(16) = "The programmer has many tools available to make the"
x$(17) = "job very easy such as functions that return the window"
x$(18) = "size, and simple one-line calls to perform actions like"
x$(19) = "opening or closing a window. "
' =======================================================================
' Open up a resizeable window
' =======================================================================
WindowOpen 1, 4, 5, 4, 16, 0, 7, 0, 7, 8, TRUE, TRUE, TRUE, FALSE, 1, "-Window 1-"
GOSUB DemoResizeDrawText
ExitFlag = FALSE
' =======================================================================
' Process window events...
' IMPORTANT: Window moving, and re-sizing is handled automatically
' The window type dictates when this is allowed to happen.
' =======================================================================
WHILE NOT ExitFlag
WindowDo 0, 0
SELECT CASE Dialog(0)
CASE 4, 9
WindowClose WindowCurrent 'Close current window
ExitFlag = TRUE
CASE 5
GOSUB DemoResizeDrawText
CASE 20
ExitFlag = TRUE 'Exit if menu action
CASE ELSE
END SELECT
WEND
WindowClose 0
EXIT SUB
DemoResizeDrawText:
WindowCls
FOR a = 1 TO 19
IF a <= WindowRows(1) THEN
WindowLocate a, 1
WindowPrint -1, x$(a)
END IF
NEXT a
RETURN
END SUB
SUB DemoScrollBar
' =======================================================================
' Open up a closeable window
' =======================================================================
IF NOT DisplayType THEN
WindowOpen 1, 4, 10, 20, 70, 0, 7, 0, 7, 15, FALSE, TRUE, FALSE, FALSE, 1, "Scroll Bar Demo"
ELSE
WindowOpen 1, 4, 10, 20, 70, 15, 5, 15, 5, 14, FALSE, TRUE, FALSE, FALSE, 1, "Scroll Bar Demo"
END IF
ButtonOpen 1, 3, "", 4, 4, 14, 4, 6
ButtonOpen 2, 4, "", 4, 6, 14, 6, 6
ButtonOpen 3, 5, "", 4, 8, 14, 8, 6
ButtonOpen 4, 4, "", 4, 10, 14, 10, 6
ButtonOpen 5, 4, "", 4, 12, 14, 12, 6
ButtonOpen 6, 9, "", 4, 16, 4, 50, 7
ButtonOpen 7, 9, "", 6, 16, 6, 50, 7
ButtonOpen 8, 8, "", 8, 16, 8, 50, 7
ButtonOpen 9, 10, "", 10, 16, 10, 50, 7
ButtonOpen 10, 12, "", 12, 16, 12, 50, 7
ButtonOpen 11, 11, "", 14, 16, 14, 50, 7
ExitFlag = FALSE
' =======================================================================
' Process window events...
' IMPORTANT: Window moving, and re-sizing is handled automatically
' The window type dictates when this is allowed to happen.
' =======================================================================
WHILE NOT ExitFlag
WindowDo 0, 0
x = Dialog(0)
SELECT CASE x
CASE 1
button = Dialog(1)
scrollCode = Dialog(19)
currState = ButtonInquire(button)
SELECT CASE scrollCode
CASE -1
IF currState > 1 THEN
newState = currState - 1
END IF
CASE -2
IF currState < MaxScrollLength(button) THEN
newState = currState + 1
END IF
CASE ELSE
newState = scrollCode
END SELECT
ButtonSetState button, newState
CASE 4, 9
WindowClose WindowCurrent 'Close current window
ExitFlag = TRUE
CASE 20
ExitFlag = TRUE 'Exit if menu action
CASE ELSE
END SELECT
WEND
WindowClose 0
END SUB
SUB DemoWindow
REDIM z$(4 TO 6, 6)
' =======================================================================
' Open up 6 windows, showcase the features, and make each a different color
' =======================================================================
IF NOT DisplayType THEN
WindowOpen 1, 6, 5, 12, 25, 0, 7, 0, 7, 15, FALSE, FALSE, FALSE, FALSE, 0, ""
ELSE
WindowOpen 1, 6, 5, 12, 25, 0, 4, 0, 4, 15, FALSE, FALSE, FALSE, FALSE, 0, ""
END IF
WindowPrint 1, "Features:"
WindowPrint 1, "No Title bar"
WindowPrint 1, "No border"
IF NOT DisplayType THEN
WindowOpen 2, 8, 15, 14, 35, 0, 7, 0, 7, 15, TRUE, FALSE, FALSE, FALSE, 1, "-Window 2-"
ELSE
WindowOpen 2, 8, 15, 14, 35, 0, 2, 0, 2, 15, TRUE, FALSE, FALSE, FALSE, 1, "-Window 2-"
END IF
WindowPrint 1, "Features:"
WindowPrint 1, "Title bar"
WindowPrint 1, "Moveable window"
WindowPrint 1, "Single-line border"
IF NOT DisplayType THEN
WindowOpen 3, 10, 25, 16, 45, 0, 7, 0, 7, 15, FALSE, TRUE, FALSE, FALSE, 1, "-Window 3-"
ELSE
WindowOpen 3, 10, 25, 16, 45, 0, 3, 0, 3, 15, FALSE, TRUE, FALSE, FALSE, 1, "-Window 3-"
END IF
WindowPrint 1, "Features:"
WindowPrint 1, "Title bar"
WindowPrint 1, "Closeable window"
WindowPrint 1, "Single-line border"
WindowOpen 4, 12, 35, 18, 55, 0, 7, 0, 7, 15, FALSE, FALSE, TRUE, FALSE, 1, "-Window 4-"
z$(4, 1) = "Features:"
z$(4, 2) = "Title bar"
z$(4, 3) = "Resizeable window"
z$(4, 4) = "Single-line border"
ValidLines = 4
GOSUB DemoReDrawText
IF NOT DisplayType THEN
WindowOpen 5, 14, 45, 20, 65, 0, 7, 0, 7, 15, TRUE, TRUE, TRUE, FALSE, 1, "-Window 5-"
ELSE
WindowOpen 5, 14, 45, 20, 65, 0, 5, 0, 5, 15, TRUE, TRUE, TRUE, FALSE, 1, "-Window 5-"
END IF
z$(5, 1) = "Features:"
z$(5, 2) = "Title bar"
z$(5, 3) = "Moveable window"
z$(5, 4) = "Closeable window"
z$(5, 5) = "Resizeable window"
z$(5, 6) = "Single-line border"
ValidLines = 6
GOSUB DemoReDrawText
IF NOT DisplayType THEN
WindowOpen 6, 16, 55, 22, 75, 0, 7, 0, 7, 15, TRUE, TRUE, TRUE, FALSE, 2, "-Window 6-"
ELSE
WindowOpen 6, 16, 55, 22, 75, 0, 6, 0, 6, 15, TRUE, TRUE, TRUE, FALSE, 2, "-Window 6-"
END IF
z$(6, 1) = "Features:"
z$(6, 2) = "Title bar"
z$(6, 3) = "Moveable window"
z$(6, 4) = "Closeable window"
z$(6, 5) = "Resizeable window"
z$(6, 6) = "Double-line border"
ValidLines = 6
GOSUB DemoReDrawText
' =======================================================================
' Show alert box describing what is going on
' =======================================================================
a$ = "WINDOWS: This demo displays six windows, each representing one "
a$ = a$ + "or more of the features that are available. You may use the "
a$ = a$ + "mouse to select windows, move windows, resize windows, or close "
a$ = a$ + "windows. You can also select border characters and define your "
a$ = a$ + "window title.| |You should know that this demo "
a$ = a$ + "consists of only six window open commands, and a 12 line "
a$ = a$ + "Select Case statement to handle the actual processing."
choice = Alert(3, a$, 7, 15, 18, 65, "OK", "Cancel", "")
IF choice = 1 THEN
ExitFlag = FALSE
ELSE
ExitFlag = TRUE
END IF
' =======================================================================
' Process window events...
' IMPORTANT: Window moving, and re-sizing is handled automatically
' The windowtype dictates when this is allowed to happen.
' =======================================================================
WHILE NOT ExitFlag
WindowDo 0, 0
SELECT CASE Dialog(0)
CASE 3
WindowSetCurrent Dialog(3) 'Change current window
CASE 4
WindowClose WindowCurrent 'Close current window
CASE 5
GOSUB DemoReDrawText 'Redraw text when resizing
CASE 9
ExitFlag = TRUE 'Exit if escape key pressed
CASE 20
ExitFlag = TRUE 'Exit if menu action
CASE ELSE
END SELECT
WEND
WindowClose 0
EXIT SUB
DemoReDrawText:
WindowCls
FOR a = 1 TO ValidLines
IF a <= WindowRows(WindowCurrent) THEN
WindowLocate a, 1
WindowPrint -1, z$(WindowCurrent, a)
END IF
NEXT a
RETURN
END SUB
FUNCTION GetFileCount (FileSpec$)
count = 0
fileName$ = DIR$(FileSpec$)
DO WHILE fileName$ <> ""
count = count + 1
fileName$ = DIR$
LOOP
GetFileCount = count
END FUNCTION
SUB MonoDisplay
DisplayType = FALSE
MouseHide
SetupMenu
MenuSetState 2, 1, 1
MenuSetState 2, 2, 2
SetupDesktop
MenuShow
MouseShow
END SUB
DEFSNG A-Z
SUB SetupDesktop STATIC
MouseHide
WIDTH , 25
IF DisplayType THEN
COLOR 15, 1 'Color
ELSE
COLOR 15, 0 'Monochrome
END IF
CLS
FOR a = 2 TO 80 STEP 4
FOR B = 2 TO 25 STEP 2
LOCATE B, a
PRINT CHR$(250);
NEXT B
NEXT a
MouseShow
END SUB
DEFINT A-Z
SUB SetupMenu
MenuSet 1, 0, 1, "Demos", 1
MenuSet 1, 1, 1, "Alert Window F1", 1
MenuSet 1, 2, 1, "Dialog Box (Simple) F2", 13
MenuSet 1, 3, 1, "Dialog Box (Complex) F3", 13
MenuSet 1, 4, 1, "List Boxes F4", 1
MenuSet 1, 5, 1, "List Box w/File List F5", 12
MenuSet 1, 6, 1, "Scroll Bars F6", 8
MenuSet 1, 7, 1, "Windows - Multiple F7", 11
MenuSet 1, 8, 1, "Window - Resizable F8", 10
MenuSet 1, 9, 1, "-", 1
MenuSet 1, 10, 1, "Exit Ctrl-X", 2
MenuSet 2, 0, 1, "Options", 1
MenuSet 2, 1, 1, "Color", 1
MenuSet 2, 2, 1, "Monochrome", 1
MenuSet 3, 0, 1, "Help", 1
MenuSet 3, 1, 1, "About This Demo", 12
MenuSet 3, 2, 1, "About The User Interface", 11
MenuSet 3, 3, 1, "About the Windows", 11
MenuSet 3, 4, 1, "Using the Mouse", 11
MenuSet 3, 5, 1, "Using Access Keys", 7
MenuSet 3, 6, 1, "Using Quick Keys", 7
ShortCutKeySet 1, 1, CHR$(0) + CHR$(59) ' F1
ShortCutKeySet 1, 2, CHR$(0) + CHR$(60) ' F2
ShortCutKeySet 1, 3, CHR$(0) + CHR$(61) ' F3
ShortCutKeySet 1, 4, CHR$(0) + CHR$(62) ' F4
ShortCutKeySet 1, 5, CHR$(0) + CHR$(63) ' F5
ShortCutKeySet 1, 6, CHR$(0) + CHR$(64) ' F6
ShortCutKeySet 1, 7, CHR$(0) + CHR$(65) ' F7
ShortCutKeySet 1, 8, CHR$(0) + CHR$(66) ' F8
ShortCutKeySet 1, 10, CHR$(24) ' Ctrl-X
IF NOT DisplayType THEN
MenuColor 0, 7, 15, 8, 7, 0, 15 'Best for monochrome and colors
ELSE
MenuColor 0, 7, 4, 8, 15, 0, 12 'Best for color
END IF
MenuPreProcess
END SUB