BBS: Inland Empire Archive Date: 06-14-93 (01:24) Number: 328 From: JIM LITTLE Refer#: NONE To: ERIC LOW Recvd: NO Subj: (2/4) Input routine Conf: (2) Quik_Bas
'>>> Start of page 2.
CASE cNull
PRINT "null. (Wait.. that isn't possible!)"
END SELECT
SUB cInput (text AS STRING, left AS INTEGER, right AS INTEGER,_
length AS INTEGER, flag AS INTEGER)
'Controlled input of text. Inputs string of text on current line, starting at
' left and continuing to right. If length is longer than space allows, text
' scrolls to left.
'Flag is set to Cescape, CupArrow, CdownArrow, CpageUp,
CpageDown, or Cok ' depending on what
' key the user used to terminate input. Cok signifies
normal (return) ' termination.
DIM topletter AS INTEGER 'letter at left of window
DIM curletter AS INTEGER 'letter at cursor position
DIM finished AS INTEGER 'true if user finished
' typing line
DIM keystroke AS INTEGER 'user's last keystroke
DIM tabsp AS INTEGER 'number of spaces to tab
' when Tab pressed
STATIC notinsert AS INTEGER 'false if insert is on,
' true otherwise
text = RTRIM$(text) 'trim off all extra spaces
topletter = 1
curletter = 1
finished = False
Printline 1, text, left, right
'following in case cursor size changes between calls
IF NOT notinsert THEN
LOCATE , , , 4, 5 'change cursor size to large block
ELSE
LOCATE , , , 0, 5 'change cursor size to thin line
END IF
DO
LOCATE , left + curletter - topletter, 1
GetStroke keystroke
LOCATE , , 0
SELECT CASE keystroke
CASE kInsert
notinsert = NOT notinsert
IF NOT notinsert THEN
LOCATE , , , 4, 5 'change cursor size to thin line
ELSE
LOCATE , , , 0, 5 'change cursor size to large block
END IF
CASE kDelete
IF LEN(text) >= 1 AND curletter <> LEN(text) + 1 THEN
MID$(text, curletter) = MID$(text, curletter + 1)
text = LEFT$(text, LEN(text) - 1)
Printline topletter, text, left, right
END IF
CASE kBackspace
IF curletter > 1 THEN
text = LEFT$(text, curletter - 2) + RIGHT$(text,_
LEN(text) - curletter + 1)
curletter = curletter - 1
IF curletter < topletter THEN
topletter = topletter - 1
END IF
Printline topletter, text, left, right
END IF
CASE kHome
IF curletter > 1 THEN
curletter = 1
IF curletter < topletter THEN
topletter = 1
Printline topletter, text, left, right
END IF
END IF
CASE kEnd
IF curletter < LEN(text) + 1 THEN
curletter = LEN(text) + 1
IF curletter > topletter + right - left THEN
topletter = LEN(text) - right + left + 1
Printline topletter, text, left, right
END IF
END IF
CASE kLeftArrow
IF curletter > 1 THEN
curletter = curletter - 1
'>>> Continued on page 3
---
* Origin: The Radix Point: Astoria, OR (1:105/330.9)

Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET