- •About the Author
- •Dedication
- •Author’s Acknowledgments
- •Contents at a Glance
- •Table of Contents
- •Introduction
- •Who Should Buy This Book
- •How This Book Is Organized
- •Part I: Programming a Computer
- •Part II: Learning Programming with Liberty BASIC
- •Part III: Advanced Programming with Liberty BASIC
- •Part VI: Internet Programming
- •Part VII: The Part of Tens
- •How to Use This Book
- •Foolish assumptions
- •Icons used in this book
- •Why Learn Computer Programming?
- •How Does a Computer Program Work?
- •What Do I Need to Know to Program a Computer?
- •The joy of assembly language
- •C: The portable assembler
- •High-level programming languages
- •Database programming languages
- •Scripting programming languages
- •The program’s users
- •The target computer
- •Prototyping
- •Choosing a programming language
- •Defining how the program should work
- •The Life Cycle of a Typical Program
- •The development cycle
- •The maintenance cycle
- •The upgrade cycle
- •Writing Programs in an Editor
- •Using a Compiler or an Interpreter
- •Compilers
- •Interpreters
- •P-code: A combination compiler and interpreter
- •So what do I use?
- •Squashing Bugs with a Debugger
- •Writing a Help File
- •Creating an Installation Program
- •Why Learn Liberty BASIC?
- •Liberty BASIC is easy
- •Liberty BASIC runs on Windows
- •You can start using Liberty BASIC today
- •Installing Liberty BASIC
- •Loading Liberty BASIC
- •Your First Liberty BASIC Program
- •Running a Liberty BASIC program
- •Saving a Liberty BASIC program
- •Getting Help Using Liberty BASIC
- •Exiting Liberty BASIC
- •Getting input
- •Displaying output
- •Sending Data to the Printer
- •Storing Data in Variables
- •Creating a variable
- •Assigning a value to a variable
- •Declaring your variables
- •Using Constants
- •Commenting Your Code
- •Using variables
- •Working with precedence
- •Using parentheses
- •Manipulating Strings
- •Declaring variables as strings
- •Smashing strings together
- •Counting the length of a string
- •Playing with UPPERCASE and lowercase
- •Trimming the front and back of a string
- •Inserting spaces
- •Yanking characters out of a string
- •Looking for a string inside another string
- •Using Boolean Expressions
- •Using variables in Boolean expressions
- •Using Boolean operators
- •Exploring IF THEN Statements
- •IF THEN ELSE statements
- •Working with SELECT CASE Statements
- •Checking a range of values
- •Checking a relational operator
- •Boolean expression inside the loop
- •Looping a Fixed Number of Times
- •Counting with different numbers
- •Counting in increments
- •Anatomy of a Computer Bug
- •Syntax Errors
- •Fun with Logic Errors
- •Stepping line by line
- •Tracing through your program
- •Designing a Window
- •Creating a new window
- •Defining the size and location of a window
- •Adding color to a window
- •Putting Controls in a Window
- •Creating a command button
- •Displaying text
- •Creating a check box
- •Creating a radio button
- •Creating text boxes
- •Creating list boxes
- •Creating combo boxes
- •Creating group boxes
- •Storing Stuff in Text Files
- •Creating a new text file
- •Putting stuff in a text file
- •Adding new stuff to an existing text file
- •Retrieving data from a text file
- •Creating a new binary file
- •Saving stuff in a binary file
- •Changing stuff in a binary file
- •Retrieving stuff from a binary file
- •Creating a Graphics Control
- •Using Turtle Graphics
- •Defining line thickness
- •Defining line colors
- •Drawing Circles
- •Drawing Boxes
- •Displaying Text
- •Making Sounds
- •Making a beeping noise
- •Playing WAV files
- •Passing Data by Value or by Reference
- •Using Functions
- •Defining a function
- •Passing data to a function
- •Calling a function
- •Exiting prematurely from a function
- •Using Subroutines
- •Defining a subroutine
- •Passing data to a subroutine
- •Calling a subroutine
- •Exiting prematurely from a subroutine
- •Writing Modular Programs
- •Introducing Structured Programming
- •Sequential instructions
- •Branching instructions
- •Looping instructions
- •Putting structured programming into practice
- •The Problem with Software
- •Ways to Make Programming Easier
- •Breaking Programs into Objects
- •How to use objects
- •How to create an object
- •Creating an object
- •Starting with a Pointer
- •Defining the parts of a linked list
- •Creating a linked list
- •Managing a linked list
- •Making Data Structures with Linked Lists
- •Stacks
- •Queues
- •Trees
- •Graphs
- •Creating a Record
- •Manipulating Data in Records
- •Storing data in a record
- •Retrieving data from a record
- •Using Records with Arrays
- •Making an Array
- •Making a Multidimensional Array
- •Creating Dynamic Arrays
- •Insertion Sort
- •Bubble Sort
- •Shell Sort
- •Quicksort
- •Sorting Algorithms
- •Searching Sequentially
- •Performing a Binary Search
- •Hashing
- •Searching by using a hash function
- •Dealing with collisions
- •Picking a Searching Algorithm
- •Choosing the Right Data Structure
- •Choosing the Right Algorithm
- •Put the condition most likely to be false first
- •Put the condition most likely to be true first
- •Clean out your loops
- •Use the correct data types
- •Using a Faster Language
- •Optimizing Your Compiler
- •Programming Computer Games
- •Creating Computer Animation
- •Making (And Breaking) Encryption
- •Internet Programming
- •Fighting Computer Viruses and Worms
- •Hacking for Hire
- •Participating in an Open-Source Project
- •Niche-Market Programming
- •Teaching Others about Computers
- •Selling Your Own Software
- •Trying Commercial Compilers
- •Windows programming
- •Macintosh and Palm OS programming
- •Linux programming
- •Testing the Shareware and
- •BASIC compilers
- •C/C++ and Java compilers
- •Pascal compilers
- •Using a Proprietary Language
- •HyperCard
- •Revolution
- •PowerBuilder
- •Shopping by Mail Order
- •Getting Your Hands on Source Code
- •Joining a Local User Group
- •Frequenting Usenet Newsgroups
- •Playing Core War
- •Programming a Battling Robot
- •Toying with Lego Mindstorms
- •Index
- •End-User License Agreement
Chapter 14: Creating a User Interface 209
Creating list boxes
To offer users multiple choices, you can use either check boxes or radio buttons. List boxes are especially handy for displaying numerous items that are cumbersome to list individually as multiple check boxes or radio buttons. In addition, list boxes help eliminate input errors because the user just clicks on a choice rather than typing something in (and risking misspelling a word).
To create a list box, you need to use the LISTBOX command this way:
LISTBOX #Windowhandle.listboxname, array$(), [action], xpos,
ypos, width, height
Here’s what the preceding command does:
1.The LISTBOX command tells the computer, “Create a list box inside the window that the nickname #Windowhandle identifies.”
2.The listboxname portion tells the computer, “Identify this list box by this unique name.”
3.The array$ portion represents a string array that contains all the items that you want to display in the list box. To learn more about arrays, see Chapter 16.
4.The [action] portion represents the instructions for the computer to follow the moment that the user chooses an item from the list box.
5.The xpos and ypos portions represent the X and Y positions of the list box’s location, which you measure in pixels from the upper-left edge of the window.
6.The width and height portions represent the width and height of the list box, which you also measure in pixels.
To choose an item in a list box, users must double-click that item. If you want users to choose an item in a list box by single-clicking, however, you need to use the following command:
PRINT #handle.listboxname, “singleclickselect”
This command tells the computer, “Let the user single click to choose any item that appears in the list box identified by listboxname.”
After the user selects an item in a list box, you can use the following two commands to identify what the user chose:
PRINT #1.listbox1, “selection?”
INPUT #1.listbox1, selected$
210 Part III: Advanced Programming with Liberty BASIC
To see how list boxes work, try the following program, which displays two list boxes, as shown in Figure 14-7. Because the top list box is smaller than the total number of items, this list box automatically adds a vertical scroll bar so that users can scroll through all the options. The top list box enables the user to single-click an item because of the following command:
PRINT #1.list1, “singleclickselect”
On the other hand, the bottom list box forces users to double-click to select an item.
NOMAINWIN
array$(0) = “Mystery meat” array$(1) = “Cat food”
array$(2) = “Something pink and artificially preserved” array$(3) = “Liquid mush”
array$(4) = “Sugar and artificial coloring”
WindowWidth = 300
WindowHeight = 240
LISTBOX #1.list1, array$(), [Action1], 40, 10, 216, 40 LISTBOX #1.list2, array$(), [Action2], 40, 100, 216, 70
OPEN “Here are your choices for dinner tonight” FOR Window AS #1
PRINT #1.list1, “singleclickselect” PRINT #1, “trapclose [quit]”
WAIT
[Action1]
PRINT #1.list1, “selection?” INPUT #1.list1, selected$
NOTICE “You chose = “ + selected$ WAIT
[Action2]
PRINT #1.list2, “selection?” INPUT #1.list2, selected$
NOTICE “You chose = “ + selected$ WAIT
[quit]
CONFIRM “Are you sure you want to quit?”; quit$ IF quit$ = “no” THEN WAIT
CLOSE #1 END
Chapter 14: Creating a User Interface 211
Figure 14-7:
List boxes can display multiple options to a user in a small amount of space.
Creating combo boxes
Combo boxes act like list boxes but they take up even less room on-screen. After the user clicks a combo box, a drop-down list of options appears for the user to choose among, as shown in Figure 14-8. As a result, combo boxes are sometimes referred to as drop-down list boxes.
To create a combo box, you need to use the COMBOBOX command, which is nearly identical to the LIST BOX command, as follows:
COMBOBOX #Windowhandle.comboboxname, array$(), [action],
xpos, ypos, width, height
After the user selects an item in a combo box, you can use the following two commands to identify what the user chose:
PRINT #1.combobox1, “selection?”
INPUT #1.combobox1, selected$
212 Part III: Advanced Programming with Liberty BASIC
Figure 14-8:
Combo boxes display a drop-
down list.
To see how combo boxes work, try the following program:
NOMAINWIN
array$(0) = “Mystery meat” array$(1) = “Cat food”
array$(2) = “Something pink and artificially preserved” array$(3) = “Liquid mush”
array$(4) = “Sugar and artificial coloring”
WindowWidth = 300
WindowHeight = 240
COMBOBOX #1.combo1, array$(, [Action], 40, 50, 216, 100
OPEN “Here are your choices for dinner tonight” FOR Window AS #1
PRINT #1, “trapclose [quit]” WAIT
[Action]
PRINT #1.combo1, “selection?” INPUT #1.combo1, selected$