home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Zodiac Super OZ
/
MEDIADEPOT.ISO
/
FILES
/
13
/
N_B_V203.ZIP
/
TINPUTM2.INC
< prev
next >
Wrap
Text File
|
1996-07-04
|
6KB
|
114 lines
$if 0
┌──────────────────────────╖ PowerBASIC v3.20
┌──┤ DASoft ╟──────────────────────┬──────────────────╖
│ ├──────────────────────────╢ Copyright 1995 │ DATE: 1995-10-01 ╟─╖
│ │ FILE NAME TINPUTM2.INC ║ by ╘════════════════─ ║ ║
│ │ ║ Don Schullian, Jr. ║ ║
│ ╘══════════════════════════╝ ║ ║
│ A license is hereby granted to the holder to use this source code in ║ ║
│ any program, commercial or otherwise, without receiving the express ║ ║
│ permission of the copyright holder and without paying any royalties, ║ ║
│ as long as this code is not distributed in any compilable format. ║ ║
│ IE: source code files, PowerBASIC Unit files, and printed listings ║ ║
╘═╤═════════════════════════════════════════════════════════════════════╝ ║
│ .................................... ║
╘═══════════════════════════════════════════════════════════════════════╝
$endif
FUNCTION fTinputM2$( SEG D$(), SEG F$(), SEG T?(), SEG H$(), SEG Fld% ) LOCAL PUBLIC
LOCAL Exet$, G$, G%, HelpOn%, X%, T&
LOCAL E?(), MyEvent%, Last%, TabFlds%
DIM tINP AS TinputTYPE
Exet$ = CHR$(0,45,0,59,0,68,0,72,0,80,0,117,0,119)
TabFlds% = UBOUND( T?(1) )
IF TabFlds% > 0 THEN Exet$ = CHR$(9,0,15) + Exet$
Last% = UBOUND( D$(1) )
Fld% = MIN( MAX( 1, Fld% ), Last% )
HelpOn% = UBOUND( H$(1) )
IF HelpON% > 0 THEN Hline$ = fHelpLine$( H$(Fld%), 1 )
DIM E?(3,Last%) ' event boxes set-up
E?(0,0) = pbvScrnRows '
E?(1,0) = pbvScrnCols '
FOR G% = 1 TO Last% '
LSET tINP = F$(G%) ' field data
E?(0,G%) = tINP.Row ' event box
E?(1,G%) = tINP.Col '
E?(2,G%) = tINP.Row '
E?(3,G%) = tINP.Cols + tINP.Col - 1 '
E?(0,0) = MIN( E?(0,0), E?(0,G%) ) ' compute top/left
E?(1,0) = MIN( E?(1,0), E?(1,G%) ) '
E?(2,0) = MAX( E?(2,0), E?(2,G%) ) ' and bottom/right
E?(3,0) = MAX( E?(3,0), E?(3,G%) ) '
NEXT
MyEvent% = fEventOpenT%( E?(0,0), Last% )
MouseONnow
DO
IF HelpOn% > 0 THEN fHelpLine H$(Fld%)
G$ = fTinputM$( D$(Fld%), F$(Fld%), Exet$, 31, 113, Fld% )
G% = fASCIIr%( G$ )
IF G% = 27 THEN EXIT LOOP
IF G% = 59 THEN
' PUT HELP CALL HERE
ITERATE
END IF
LSET tINP = F$(Fld%)
IF tINP.Just > 0 THEN
D$(Fld%) = fJustify$( D$(Fld%), tINP.Cols, tINP.Just )
TprintCLEAR tINP.Row, tINP.Col, tINP.Cols, D$(Fld%), 0
END IF
IF G% = 255 THEN
IF fEventLastBox% <> MyEvent% THEN
G% = 68
ELSE
Fld% = fEventLastItem%
ITERATE
END IF
SELECT CASE G%
CASE 72 : DECR Fld%, 1 ' <UP>
IF Fld% = 0 THEN Fld% = Last%
CASE 80, 13 : INCR Fld%, 1 ' <DOWN> & <ENTER>
IF Fld% > Last% THEN Fld% = 1
CASE 9 : X% = 1 ' <TAB>
FOR G% = 1 TO TabFlds% ' check tab
IF Fld% < T?(G%) THEN ' fields from start
X% = T?(G%) ' to finish of the
EXIT FOR ' list with the
END IF ' default as #1
NEXT '
Fld% = X% '
CASE 15 : X% = Last% ' <SHIFT><TAB>
FOR G% = TabFlds% TO 1 STEP -1 ` same as above
IF Fld% > T?(G%) THEN ` but in reverse
X% = T?(G%) ` order
EXIT FOR `
END IF `
NEXT `
Fld% = X% `
CASE 119 : Fld% = 1 ' <CTRL><HOME>
CASE 117 : Fld% = Last% ' <CTRL><END>
CASE 68 ' <F-10>
G$ = CHR$(0,0,0,0) '
FOR G% = Last% TO 1 STEP -1 ' run a last check
LSET tINP = F$(G%) ' on manditory flds
IF tINP.MustBe = 0 THEN ITERATE '
SELECT CASE tINP.Style '
CASE "N" ' numbers
IF VAL( D$(G%) ) = 0 THEN EXIT FOR '
CASE "D", "T" ' dates & times
T& = CVL( D$(G%) + G$ ) '
IF T& = 0 THEN EXIT FOR '
CASE ELSE ' everything else
IF D$(G%) = "" THEN EXIT FOR '
END SELECT '
NEXT '
IF G% = 0 THEN EXIT LOOP ' all fields ok!
Fld% = G% ' go back & get it
END SELECT '
LOOP '
IF HelpON% > 0 THEN TBoxWrite Hline$ '
'
FUNCTION = G$ '
END FUNCTION