home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 15
/
CD_ASCQ_15_070894.iso
/
vrac
/
dnalib7a.zip
/
LINEEDIT.BAS
< prev
next >
Wrap
BASIC Source File
|
1994-05-14
|
4KB
|
192 lines
DECLARE SUB CalcByte(Attr%,LowByte%,HiByte%)
DECLARE SUB Clicked(Rgt%,Lft%,Row%,Col%)
DECLARE SUB HideCursor()
DECLARE SUB ShowCursor()
DECLARE FUNCTION InsertKey%()
DECLARE FUNCTION LeftButtonReleased%()
SUB LineEdit(Allow$,Text$,Mouse%,MouseRow%,MouseCol%,Fill%,Row%,Col%,EditKey%,Attr%) PUBLIC
$CODE SEG "DNASEG1"
CalcByte Attr%,FGround%,BGround%
IF Mouse% THEN HideCursor
Finished% = 0
LOCATE Row%,Col%
COLOR FGround%,BGround%
IF Text$ = STRING$(LEN(Text$),32) THEN
Temp$ = STRING$(LEN(Text$),Fill%)
PRINT Temp$;
ELSE
a% = LEN(Text$):b% = LEN(RTRIM$(Text$))
Temp$ = RTRIM$(Text$) + STRING$(a% - b%,Fill%)
PRINT Temp$;
END IF
IF Editkey% = 255 THEN EXIT SUB
CursorPosition% = Col% + b%
DO
IF CursorPosition% = Col% + LEN(Text$) THEN
LOCATE Row%,CursorPosition%,0
ELSE
IF InsertKey% THEN
LOCATE Row%,CursorPosition%,1,0,13 'Block Cusor
ELSE
LOCATE Row%,CursorPosition%,1,11,12 'Normal Cursor
END IF
END IF
WHILE NOT INSTAT
IF Mouse% THEN
ShowCursor
Clicked Rgt%,Lft%,MRow%,MCol%
IF LeftButtonReleased% THEN
MouseRow% = MRow%
MouseCol% = MCol%
Editkey% = -255
GOTO KeyBoardRoutine
END IF
END IF
WEND
Ky$ = INKEY$
IF LEN(Ky$) = 1 THEN
EditKey% = ASC(Ky$)
ELSE
EditKey% = -ASC(RIGHT$(Ky$,1))
END IF
KeyBoardRoutine:
SELECT CASE EditKey%
CASE 8 'BackSpace
IF CursorPosition% > Col% THEN
A$ = LEFT$(Temp$,CursorPosition% - Col% - 1)
B$ = RIGHT$(Temp$,Col% + LEN(Text$) - CursorPosition%)
Temp$ = A$ + B$ + STRING$(LEN(Text$) - LEN(A$ + B$),Fill%)
DECR CursorPosition%
IF Mouse% THEN HideCursor
LOCATE Row%,Col%
PRINT Temp$;
END IF
CASE 13,9,-72,-80 'EnterKey TabKey Up/Down ArrowKey
A$ = LTRIM$(RTRIM$(Temp$,CHR$(Fill%)))
Text$ = A$ + SPACE$(LEN(Text$) - LEN(A$))
Finished% = 1
CASE 27 'EscKey
LOCATE Row%,Col%
COLOR FGround%,BGround%
IF Text$ = STRING$(LEN(Text$),32) THEN
Temp$ = STRING$(LEN(Text$),Fill%)
IF Mouse% THEN HideCursor
PRINT Temp$;
ELSE
a% = LEN(Text$):b% = LEN(RTRIM$(Text$))
Temp$ = RTRIM$(Text$) + STRING$(a% - b%,Fill%)
IF Mouse% THEN HideCursor
PRINT Temp$;
END IF
Finished% = 1
CASE -71 'HomeKey
CursorPosition% = Col%
CASE -75 'LeftArrow
IF CursorPosition% > Col% THEN
DECR CursorPosition%
END IF
CASE -77 'RightArrow
IF CursorPosition% < Col% + LEN(RTRIM$(Temp$,(CHR$(Fill%)))) THEN
INCR CursorPosition%
END IF
CASE -79 'EndKey
CursorPosition% = Col% + LEN(RTRIM$(Temp$,(CHR$(Fill%))))
CASE -82 'InsertKey
IF InsertKey% THEN
LOCATE ,,,0,13
ELSE
LOCATE ,,,11,12
END IF
CASE -83 'DeleteKey
IF CursorPositon% > Col% - 1 OR CursorPosition% < Col% + LEN(Text$) THEN
A$ = LEFT$(Temp$,CursorPosition% - Col%)
B$ = RIGHT$(Temp$,Col% + LEN(Text$) - CursorPosition% - 1)
Temp$ = A$ + B$ + STRING$(LEN(Text$) - LEN(A$ + B$),Fill%)
IF Mouse% THEN HideCursor
LOCATE Row%,Col%
PRINT Temp$;
END IF
CASE 32 TO 254
IF CursorPosition% < Col% + LEN(Text$) THEN
SELECT CASE LEFT$(Allow$,1)
CASE CHR$(24)
Ky$ = UCASE$(Ky$)
CASE CHR$(25)
Ky$ = LCASE$(Ky$)
CASE ELSE
Ky$ = Ky$
END SELECT
IF INSTR(Ky$,ANY (Allow$)) THEN
IF InsertKey% THEN
A$ = LEFT$(Temp$,CursorPosition% - Col%)
B$ = RIGHT$(Temp$,Col% + LEN(Text$) - (CursorPosition% + 1))
Temp$ = A$ + Ky$ + B$
IF Mouse% THEN HideCursor
LOCATE Row%,Col%
PRINT Temp$;
INCR CursorPosition%
ELSE
A$ = LEFT$(Temp$,CursorPosition% - Col%)
B$ = RIGHT$(Temp$,Col% + LEN(Text$) - CursorPosition%)
C$ = LEFT$(B$,LEN(B$) - 1)
Temp$ = A$ + Ky$ + C$
IF Mouse% THEN HideCursor
LOCATE Row%,Col%
PRINT Temp$;
INCR CursorPosition%
END IF
END IF
END IF
CASE -255 'exit with mouse
A$ = LTRIM$(RTRIM$(Temp$,CHR$(Fill%)))
Text$ = A$ + SPACE$(LEN(Text$) - LEN(A$))
Finished% = 1
CASE ELSE
BEEP
END SELECT
LOOP UNTIL Finished% = 1
END SUB