' +---------------------------------------------------------------------+ ' | | ' | - I n f o . B a s - | ' | | ' | | ' | Public Domain - FreeWare | ' +---------------------------------------------------------------------+ ' +---------------------------------------------------------------------+ ' | - ABOUT THE AUTHOR - | ' +---------------------------------------------------------------------+ ' | | ' | Hello. My name is Don Smith and I am a thirty-year retired teacher | ' | of Math/History/Spanish residing in Orange County, California. I | ' | am also a former six-year Sergeant of Marines. Who-Rah! On certain | ' | forums I am known as MarineDon. My email is: smithdonb@earthlink.net| ' | | ' +---------------------------------------------------------------------+ ' | - COPYING AND DISTIBUTING - | ' +---------------------------------------------------------------------+ ' | Since this code is public domain and freeware, anyone may freely | ' | copy and distribute it. If you use the QuickBasic code in one of | ' | your own programs, you do not have to cite my name as the author, | ' | and you may even change its name. | ' +---------------------------------------------------------------------+ ' |Info.bas by Don Smith on 10/01/2001. Contains four catergories | ' |which will help programmers: (1) Single numbers of QBASIC colors, | ' |(2) Hexidecimal numbers of QBASIC colors, (3) ASCII numbers of | ' |the Box Drawing characters, and (4) numbers 0 to 255 of | ' |all ASCII and extended ASCII characters. Revised 10-01-2001 | ' | | ' | InfoLink.Txt: | ' | ------------------ | ' | c:\basic\obj\info+ | ' | c:\basic\obj\qb1+ | ' | c:\basic\obj\qb2+ | ' | c:\basic\obj\colorpak+ | ' | c:\basic\obj\colorpk2+ | ' | c:\basic\obj\hc1+ | ' | c:\basic\obj\hc2+ | ' | c:\basic\obj\charm+ | ' | c:\basic\obj\ascii1+ | ' | c:\basic\obj\ascii2+ /noe | ' | | ' | Compiling: | ' | BC: Info | ' | LINK: @infolint.txt | ' | LIB: Pro Pdq | ' | | ' +---------------------------------------------------------------------+ ' DEFINT A-Z ' '---------------------------------------------------------------- DECLARE SUB QBColors (MonoCode%) DECLARE SUB QBColrs2 (MonoCode%) DECLARE SUB Colorpak (MonoCode%) DECLARE SUB Colorpk2 (MonoCode%) DECLARE SUB HC1 (MonoCode%) DECLARE SUB HC2 (MonoCode%) DECLARE SUB Charm (MonoCode%) DECLARE SUB Ascii1 (MonoCode%) DECLARE SUB Ascii2 (MonoCode%) DECLARE SUB BoxBoy (Title$, ULRow%, ULCol%, LRRow%, LRCol%, TitleRow%, TitleCol%, TitColr, BoxColr%, BoxStyle%, Shadow%, ClearColr%) DECLARE SUB CMenu (M$(), Row%, Col%, RegColr%, HiLiteColr%, MaxItems%, LenLine%, SD%, Selection%, ExitCode%) '---------------------------------------------------------------- Selection% = 1 Row% = 5 '---------------------------------------------------------------- loopdeloop: COLOR 15, 1: CLS RegColr% = 31 HiLiteColr% = 15 Col% = 25 MaxItems% = 8 LenLine% = 20 SD% = 2 REDIM M$(MaxItems% + 1) M$(1) = "1. QuickBASIC Colors" M$(2) = "2. Colors As One Decimal" M$(3) = "3. Colors As One Hexadecimal" M$(4) = "4. Box Drawing Characters" M$(5) = "5. ASCII Characters" M$(6) = "6. CVI Keys Trap" M$(7) = "7. INKEY$ Keys Trap" M$(8) = "8. Exit Program " Title$ = "Programming Information" ULRow% = 2 ULCol% = 18 LRRow% = 21 LRCol% = 57 TitleRow% = 3 TitleCol% = 28 TitColr% = 27 BoxColr% = 31 BoxStyle% = 2 Shadow% = 0 ClearColr% = 1000 CALL BoxBoy(Title$, ULRow%, ULCol%, LRRow%, LRCol%, TitleRow%, TitleCol%, TitColr%, BoxColr%, BoxStyle%, Shadow%, ClearColr%) GOSUB bottom.info CALL CMenu(M$(), Row%, Col%, RegColr%, HiLiteColr%, MaxItems%, LenLine%, SD%, Selection%, ExitCode%) IF Selection% = 1 THEN GOSUB quickbasic.colors GOTO loopdeloop ELSEIF Selection% = 2 THEN GOSUB decimal.colors GOTO loopdeloop ELSEIF Selection% = 3 THEN GOSUB hexidecimal.colors GOTO loopdeloop ELSEIF Selection% = 4 THEN GOSUB box.characters GOTO loopdeloop ELSEIF Selection% = 5 THEN GOSUB ascii.characters GOTO loopdeloop ELSEIF Selection% = 6 THEN GOSUB charhunt GOTO loopdeloop ELSEIF Selection% = 7 THEN GOSUB inkeyhunt GOTO loopdeloop ELSEIF Selection% = 8 THEN LOCATE 1, 1, 1, 6, 7: COLOR 7, 0: CLS : END END IF GOTO loopdeloop bottom.info: LOCATE 22, 16 CALL MQPrint("Public Domain FreeWare by Don Smith (10/01/2001)", 27) LOCATE 22, 52: CALL MQPrint("(", 31) LOCATE 22, 55: CALL MQPrint("/", 31) LOCATE 22, 58: CALL MQPrint("/", 31) LOCATE 22, 63: CALL MQPrint(")", 31) LOCATE 23, 24: CALL MQPrint("EMail: smithdonb@earthlink.net", 27) LOCATE 23, 24: CALL MQPrint("E", 31) LOCATE 23, 29: CALL MQPrint(":", 31) LOCATE 23, 40: CALL MQPrint("@", 31) LOCATE 23, 50: CALL MQPrint(".", 31) RETURN quickbasic.colors: LOCATE 1, 1, 0, 0, 0 MonoCode% = 0 CALL QBColors(MonoCode%) 'BLOAD "c:\basic\bsv\qbcolors.Bsv" GOSUB cvi.key IF PoundKey% = 27 THEN RETURN 'Enter/DownArrow/PageDown ELSEIF PoundKey% = 13 OR PoundKey% = 20480 OR PoundKey% = 20736 THEN MonoCode% = 0 CALL QBColrs2(MonoCode%) 'BLOAD "c:\basic\bsv\qbcolrs2.bsv" GOSUB cvi.key DO IF PoundKey% = 27 THEN RETURN 'UpArrow/PageUp ELSEIF PoundKey% = 18432 OR PoundKey% = 18688 THEN GOTO quickbasic.colors ELSE GOTO quickbasic.colors END IF LOOP END IF GOTO quickbasic.colors RETURN decimal.colors: COLOR 15, 0: CLS LOCATE 1, 1, 0, 0, 0 MonoCode% = 0 CALL Colorpak(MonoCode%) 'BLOAD "c:\basic\bsv\colorpak.bsv" GOSUB cvi.key IF PoundKey% = 27 THEN RETURN 'Enter/DownArrow/PageDown ELSEIF PoundKey% = 13 OR PoundKey% = 20480 OR PoundKey% = 20736 THEN MonoCode% = 0 CALL Colorpk2(MonoCode%) 'BLOAD "c:\basic\bsv\colorpk2.bsv" GOSUB cvi.key DO IF PoundKey% = 27 THEN RETURN 'UpArrow/PageUp ELSEIF PoundKey% = 18432 OR PoundKey% = 18688 THEN GOTO decimal.colors ELSE GOTO decimal.colors END IF LOOP END IF GOTO decimal.colors RETURN hexidecimal.colors: LOCATE 1, 1, 0, 0, 0 MonoCode% = 0 CALL HC1(MonoCode%) 'BLOAD "c:\basic\bsv\HC1.Bsv" GOSUB cvi.key IF PoundKey% = 27 THEN RETURN 'Enter/DownArrow/PageDown ELSEIF PoundKey% = 13 OR PoundKey% = 20480 OR PoundKey% = 20736 THEN MonoCode% = 0 CALL HC2(MonoCode%) 'BLOAD "c:\basic\bsv\HC2.bsv" GOSUB cvi.key DO IF PoundKey% = 27 THEN RETURN 'UpArrow/PageUp ELSEIF PoundKey% = 18432 OR PoundKey% = 18688 THEN GOTO hexidecimal.colors ELSE GOTO hexidecimal.colors END IF LOOP END IF GOTO hexidecimal.colors RETURN box.characters: LOCATE 1, 1, 0, 0, 0 MonoCode% = 0 CALL Charm(MonoCode%) 'BLOAD "c:\basic\bsv\charm.bsv" DO: LOOP UNTIL INKEY$ = CHR$(27) RETURN ascii.characters: LOCATE 1, 1, 0, 0, 0 MonoCode% = 0 CALL Ascii1(MonoCode%) 'BLOAD "c:\basic\bsv\ascii1.bsv" GOSUB cvi.key IF PoundKey% = 27 THEN RETURN ' Enter/DownArrow/PageDown ELSEIF PoundKey% = 13 OR PoundKey% = 20480 OR PoundKey% = 20736 THEN MonoCode% = 0 CALL Ascii2(MonoCode%) 'BLOAD "c:\basic\bsv\ascii2.bsv" GOSUB cvi.key DO IF PoundKey% = 27 THEN RETURN 'UpArrow/PageUp ELSEIF PoundKey% = 18432 OR PoundKey% = 18688 THEN GOTO ascii.characters ELSE GOTO ascii.characters END IF LOOP END IF GOTO ascii.characters RETURN cvi.key: DO DO PoundKey$ = INKEY$ LOOP UNTIL LEN(PoundKey$) > 0 PoundKey% = CVI(PoundKey$ + CHR$(0)) RETURN LOOP charhunt: COLOR 15, 0: CLS CALL Box0(1, 22, 3, 58, 1, 15) LOCATE 2, 25, 0, 0, 0 CALL MQPrint("K e y C o d e P r o g r a m", 15) CALL Box0(4, 3, 25, 77, 1, 15) Ms1$ = "Press to exit or for information. Please do not press these" Ms2$ = "keys otherwise. is number 27 and is number 15104." Ms3$ = "Ã" + STRING$(73, 196) + "´" Ms4$ = "Press any key or key combination to find the CVI keycode number:" LOCATE 5, 5: CALL MQPrint(Ms1$, 15) LOCATE 5, 12: CALL MQPrint("Esc", 11) LOCATE 5, 29: CALL MQPrint("F1", 11) LOCATE 6, 5: CALL MQPrint(Ms2$, 15) LOCATE 7, 3: CALL MQPrint(Ms3$, 15) LOCATE 8, 5: CALL MQPrint(Ms4$, 15) LOCATE 9, 3, 0, 0, 0: CALL MQPrint(Ms3$, 15) CVICol% = 9 CVIRow% = 9 DO DO WhatNum$ = INKEY$ LOOP UNTIL LEN(WhatNum$) > 0 K% = CVI(WhatNum$ + CHR$(0)) IF K% = 27 THEN RETURN ELSEIF K% = 15104 THEN 'F1 key GOSUB cvi.information GOTO charhunt ELSE Info = 0: Info3 = 0 GOSUB find.number GOSUB set.row.col LOCATE CVIRow%, CVICol%, 0, 0, 0 IF K% = 10 THEN CALL MQPrint(" J or j....... = 10", 15) GOSUB set.row.col LOCATE CVIRow%, CVICol%: CALL MQPrint(" ...... = 10", 15) LOCATE CVIRow%, CVICol% - 1, 0, 0, 0: CALL MQPrint("*", 14) LOCATE 25, 35: CALL MQPrint("[ *Same ]", 15) LOCATE 25, 37: CALL MQPrint("*", 14) ELSEIF K% = 16 THEN CALL MQPrint(" P or p....... = 16", 15) LOCATE CVIRow%, CVICol% - 1: CALL MQPrint("*", 14) GOSUB set.row.col LOCATE CVIRow%, CVICol%: CALL MQPrint(" = 16", 15) LOCATE CVIRow%, CVICol% - 1, 0, 0, 0: CALL MQPrint("*", 14) LOCATE 25, 35: CALL MQPrint("[ *Same ]", 15) LOCATE 25, 37: CALL MQPrint("*", 14) ELSEIF K% <> 10 AND K% <> 16 THEN IF LEN(K$) <= 20 THEN NumDots% = 20 - LEN(K$) END IF CALL MQPrint(K$ + STRING$(NumDots%, ".") + " = " + STR$(K%), 15) IF Info = 2 THEN LOCATE CVIRow%, CVICol% - 1: CALL MQPrint("*", 14) GOSUB set.row.col LOCATE CVIRow%, CVICol%, 0, 0, 0 CALL MQPrint(k2$ + " = " + STR$(K%), 15) LOCATE CVIRow%, CVICol% - 1: CALL MQPrint("*", 14) LOCATE 25, 35: CALL MQPrint("[ *Same ]", 15) LOCATE 25, 37: CALL MQPrint("*", 14) END IF IF Info3 = 3 THEN GOSUB set.row.col LOCATE CVIRow%, CVICol%, 0, 0, 0 CALL MQPrint(k3$ + " = " + STR$(K%), 15) LOCATE CVIRow%, CVICol% - 1: CALL MQPrint("*", 14) END IF IF Info4 = 4 THEN GOSUB set.row.col LOCATE CVIRow%, CVICol%, 0, 0, 0 CALL MQPrint(k4$ + " = " + STR$(K%), 15) LOCATE CVIRow%, CVICol% - 1: CALL MQPrint("*", 14) END IF Info = 0 Info3 = 0 Info4 = 0 END IF END IF LOOP set.row.col: IF CVICol% = 9 THEN CVICol% = 9 CVIRow% = CVIRow% + 1 IF CVIRow% > 24 THEN CVICol% = 43 CVIRow% = 10 END IF ELSEIF CVICol% = 43 THEN CVICol% = 43 CVIRow% = CVIRow% + 1 IF CVIRow% > 24 THEN CALL ClearScr0(10, 4, 24, 76, 15) CVICol% = 9 CVIRow% = 10 END IF END IF RETURN set.ink.row.col: IF INKCol% = 9 THEN INKCol% = 9 INKRow% = INKRow% + 1 IF INKRow% > 24 THEN INKCol% = 43 INKRow% = 10 END IF ELSEIF INKCol% = 43 THEN INKCol% = 43 INKRow% = INKRow% + 1 IF INKRow% > 24 THEN CALL ClearScr0(10, 4, 24, 76, 15) INKCol% = 9 INKRow% = 10 END IF END IF RETURN find.number: IF K% = 97 THEN K$ = "a" IF K% = 98 THEN K$ = "b" IF K% = 99 THEN K$ = "c" IF K% = 100 THEN K$ = "d" IF K% = 101 THEN K$ = "e" IF K% = 102 THEN K$ = "f" IF K% = 103 THEN K$ = "g" IF K% = 104 THEN K$ = "h" IF K% = 105 THEN K$ = "i" IF K% = 106 THEN K$ = "j" IF K% = 107 THEN K$ = "k" IF K% = 108 THEN K$ = "l" IF K% = 109 THEN K$ = "m" IF K% = 110 THEN K$ = "n" IF K% = 111 THEN K$ = "o" IF K% = 112 THEN K$ = "p" IF K% = 113 THEN K$ = "q" IF K% = 114 THEN K$ = "r" IF K% = 115 THEN K$ = "s" IF K% = 116 THEN K$ = "t" IF K% = 117 THEN K$ = "u" IF K% = 118 THEN K$ = "v" IF K% = 119 THEN K$ = "w" IF K% = 120 THEN K$ = "x" IF K% = 121 THEN K$ = "y" IF K% = 122 THEN K$ = "z" IF K% = 65 THEN K$ = "A" IF K% = 66 THEN K$ = "B" IF K% = 67 THEN K$ = "C" IF K% = 68 THEN K$ = "D" IF K% = 69 THEN K$ = "E" IF K% = 70 THEN K$ = "F" IF K% = 71 THEN K$ = "G" IF K% = 72 THEN K$ = "H" IF K% = 73 THEN K$ = "I" IF K% = 74 THEN K$ = "J" IF K% = 75 THEN K$ = "K" IF K% = 76 THEN K$ = "L" IF K% = 77 THEN K$ = "M" IF K% = 78 THEN K$ = "N" IF K% = 79 THEN K$ = "O" IF K% = 80 THEN K$ = "P" IF K% = 81 THEN K$ = "Q" IF K% = 82 THEN K$ = "R" IF K% = 83 THEN K$ = "S" IF K% = 84 THEN K$ = "T" IF K% = 85 THEN K$ = "U" IF K% = 86 THEN K$ = "V" IF K% = 87 THEN K$ = "W" IF K% = 88 THEN K$ = "X" IF K% = 89 THEN K$ = "Y" IF K% = 90 THEN K$ = "Z" IF K% = 48 THEN K$ = "0" IF K% = 49 THEN K$ = "1" IF K% = 50 THEN K$ = "2" IF K% = 51 THEN K$ = "3" IF K% = 52 THEN K$ = "4" IF K% = 53 THEN K$ = "5" IF K% = 54 THEN K$ = "6" IF K% = 55 THEN K$ = "7" IF K% = 56 THEN K$ = "8" IF K% = 57 THEN K$ = "9" IF K% = 15104 THEN K$ = "F1" IF K% = 15360 THEN K$ = "F2" IF K% = 15616 THEN K$ = "F3" IF K% = 15872 THEN K$ = "F4" IF K% = 16128 THEN K$ = "F5" IF K% = 16384 THEN K$ = "F6" IF K% = 16640 THEN K$ = "F7" IF K% = 16896 THEN K$ = "F8" IF K% = 17152 THEN K$ = "F9" IF K% = 17408 THEN K$ = "F10" IF K% = 96 THEN K$ = "< ` >" IF K% = 126 THEN K$ = "< ~ >" IF K% = 33 THEN K$ = "< ! >" IF K% = 64 THEN K$ = "< @ >" IF K% = 35 THEN K$ = "< # >" IF K% = 36 THEN K$ = "< $ >" IF K% = 37 THEN K$ = "< % >" IF K% = 94 THEN K$ = "< ^ >" IF K% = 38 THEN K$ = "< & >" IF K% = 42 THEN K$ = "< * >" IF K% = 40 THEN K$ = "< ( >" IF K% = 41 THEN K$ = "< ) >" IF K% = 45 THEN K$ = "< - > Dash" IF K% = 61 THEN K$ = "< = >" IF K% = 95 THEN K$ = "< _ > Underline" IF K% = 43 THEN K$ = "< + >" 'IF k% = 9 THEN k$ = "" IF K% = 32 THEN K$ = "" IF K% = 91 THEN K$ = "< [ >" IF K% = 93 THEN K$ = "< ] >" IF K% = 92 THEN K$ = "< \ >" IF K% = 47 THEN K$ = "< / >" IF K% = 123 THEN K$ = "< { >" IF K% = 125 THEN K$ = "< } >" IF K% = 124 THEN K$ = "< | >" 'IF k% = 8 THEN k$ = "" IF K% = 27 THEN K$ = "" IF K% = 44 THEN K$ = "< , > Comma" IF K% = 46 THEN K$ = "< . > Period" IF K% = 20992 THEN K$ = "" IF K% = 21248 THEN K$ = "" IF K% = 18176 THEN K$ = "" IF K% = 20224 THEN K$ = "" IF K% = 18688 THEN K$ = "" IF K% = 20736 THEN K$ = "" IF K% = 18432 THEN K$ = "" IF K% = 20480 THEN K$ = "" IF K% = 19712 THEN K$ = "" IF K% = 19200 THEN K$ = "" IF K% = 60 THEN K$ = "( < )" IF K% = 62 THEN K$ = "( > )" IF K% = 63 THEN K$ = "< ? >" IF K% = 34 THEN K$ = "< " + CHR$(34) + " > Apostrophe" IF K% = 59 THEN K$ = "< ; > Semi-colon" IF K% = 58 THEN K$ = "< : > Colon" IF K% = 1 THEN K$ = " A or a" Info = 2 k2$ = " <1> on keypad " END IF IF K% = 2 THEN K$ = " B or b" Info = 2 k2$ = " <2> on keypad " Info3 = 3 k3$ = " <" + CHR$(25) + "> on keypad " END IF IF K% = 3 THEN K$ = " C or c" Info = 2 k2$ = " <3> on keypad " END IF IF K% = 4 THEN K$ = " D or d" Info = 2 k2$ = " <4> on keypad " Info3 = 3 k3$ = " <" + CHR$(17) + "-> on keypad" END IF IF K% = 5 THEN K$ = " E or e" Info = 2 k2$ = " <5> on keypad " END IF IF K% = 6 THEN K$ = " F or f" Info = 2 k2$ = " <6> on keypad " Info3 = 3 k3$ = " <-" + CHR$(16) + "> on keypad" END IF IF K% = 7 THEN K$ = " G or g" Info = 2 k2$ = " <7> on keypad " END IF IF K% = 8 THEN K$ = " H or h" Info = 2 k2$ = "<8><" + CHR$(24) + ">on keypad" Info3 = 3 k3$ = " " Info4 = 4 k4$ = "........." END IF IF K% = 9 THEN K$ = "" Info = 2 k2$ = " I or i......." Info3 = 3 k3$ = " <9> on keypad " END IF IF K% = 10 THEN K$ = " J or j" Info = 2 k2$ = " ......" END IF IF K% = 11 THEN K$ = " K or k" IF K% = 12 THEN K$ = " L or l" IF K% = 13 THEN K$ = " M or m" Info = 2 k2$ = "............." END IF IF K% = 14 THEN K$ = " N or n" IF K% = 15 THEN K$ = " O or o" IF K% = 17 THEN K$ = " Q or q" IF K% = 18 THEN K$ = " R or r" IF K% = 19 THEN K$ = " S or s" IF K% = 20 THEN K$ = " T or t" IF K% = 21 THEN K$ = " U or u" IF K% = 22 THEN K$ = " V or v" IF K% = 23 THEN K$ = " W or w" IF K% = 24 THEN K$ = " X or x" IF K% = 25 THEN K$ = " Y or y" IF K% = 26 THEN K$ = " Z or z" IF K% = 768 THEN K$ = "<2> under F keys" IF K% = 30 THEN K$ = "<6> under F keys" IF K% = 29 THEN K$ = " < ] >...." IF K% = 21504 THEN K$ = " F1" IF K% = 21760 THEN K$ = " F2" IF K% = 22016 THEN K$ = " F3" IF K% = 22272 THEN K$ = " F4" IF K% = 22528 THEN K$ = " F5" IF K% = 22784 THEN K$ = " F6" IF K% = 23040 THEN K$ = " F7" IF K% = 23296 THEN K$ = " F8" IF K% = 23552 THEN K$ = " F9" IF K% = 23808 THEN K$ = " F10" IF K% = 3840 THEN K$ = " " IF K% = -28160 THEN K$ = " " IF K% = -27904 THEN K$ = " " IF K% = 30464 THEN K$ = " " IF K% = -31744 THEN K$ = " " IF K% = 30208 THEN K$ = " " IF K% = -29440 THEN K$ = " " IF K% = -28416 THEN K$ = " " IF K% = 29696 THEN K$ = " " IF K% = 29440 THEN K$ = " " IF K% = -27648 THEN K$ = " " IF K% = -27392 THEN K$ = " " IF K% = 28 THEN K$ = " < \ >" IF K% = -27136 THEN K$ = " <* on keypad>" IF K% = 127 THEN K$ = " " IF K% = 31 THEN K$ = " < - >" IF K% = 29184 THEN K$ = " " IF K% = 7680 THEN K$ = " A or a" IF K% = 12288 THEN K$ = " B or b" IF K% = 11776 THEN K$ = " C or c" IF K% = 8192 THEN K$ = " D or d" IF K% = 4608 THEN K$ = " E or e" IF K% = 8448 THEN K$ = " F or f" IF K% = 8704 THEN K$ = " G or g" IF K% = 8960 THEN K$ = " H or h" IF K% = 5888 THEN K$ = " I or i" IF K% = 9216 THEN K$ = " J or j" IF K% = 9472 THEN K$ = " K or k" IF K% = 9728 THEN K$ = " L or l" IF K% = 12800 THEN K$ = " M or m" IF K% = 12544 THEN K$ = " N or n" IF K% = 6144 THEN K$ = " O or o" IF K% = 6400 THEN K$ = " P or p" IF K% = 4096 THEN K$ = " Q or q" IF K% = 4864 THEN K$ = " R or r" IF K% = 7936 THEN K$ = " S or s" IF K% = 5120 THEN K$ = " T or t" IF K% = 5632 THEN K$ = " U or u" IF K% = 12032 THEN K$ = " V or v" IF K% = 4352 THEN K$ = " W or w" IF K% = 11520 THEN K$ = " X or x" IF K% = 5376 THEN K$ = " Y or y" IF K% = 11264 THEN K$ = " Z or z" IF K% = -23296 THEN K$ = " " IF K% = -24064 THEN K$ = " " IF K% = -23808 THEN K$ = " " IF K% = -26880 THEN K$ = " " IF K% = -24832 THEN K$ = " " IF K% = -26368 THEN K$ = " " IF K% = -24320 THEN K$ = " " IF K% = 13056 THEN K$ = " < " IF K% = 13312 THEN K$ = " > " IF K% = 13568 THEN K$ = " < / >" IF K% = 9984 THEN K$ = " < ; > Semi-colon" IF K% = 10240 THEN K$ = " < ' >" IF K% = 6656 THEN K$ = " < [ >" IF K% = 6912 THEN K$ = " < ] >" IF K% = 11008 THEN K$ = " < \ >" IF K% = 32512 THEN K$ = " <0>" IF K% = 30720 THEN K$ = " <1>" IF K% = 30976 THEN K$ = " <2>" IF K% = 31232 THEN K$ = " <3>" IF K% = 31488 THEN K$ = " <4>" IF K% = 31744 THEN K$ = " <5>" IF K% = 32000 THEN K$ = " <6>" IF K% = 32256 THEN K$ = " <7>" IF K% = 32512 THEN K$ = " <8>" IF K% = -32768 THEN K$ = " <9>" IF K% = -32512 THEN K$ = " <0>" IF K% = 9984 THEN K$ = " < ; >Semi-Colon" IF K% = 10496 THEN K$ = " < ` >" IF K% = -32256 THEN K$ = " < - >" IF K% = -32000 THEN K$ = " < = >" IF K% = -26624 THEN K$ = " " IF K% = -24576 THEN K$ = " " IF K% = -25344 THEN K$ = " " IF K% = -25856 THEN K$ = " " IF K% = 7168 THEN K$ = " " IF K% = -23552 THEN K$ = " < / on keypad>" IF K% = 14080 THEN K$ = " < * on keypad>" IF K% = 19968 THEN K$ = " < + on keypad>" IF K% = -28672 THEN K$ = " < + on keypad>" IF K% = 29952 THEN K$ = " <1> on keypad" Info = 2 k2$ = " ........" END IF IF K% = -28416 THEN K$ = " <2> on keypad" Info = 2 k2$ = " " END IF IF K% = 30208 THEN K$ = " <3> on keypad" Info = 2 k2$ = " .." END IF IF K% = 29440 THEN K$ = " <4> on keypad" Info = 2 k2$ = " " END IF IF K% = -28928 THEN K$ = " <5 on keypad>" IF K% = 29696 THEN K$ = " <6> on keypad" Info = 2 k2$ = " " END IF IF K% = 30464 THEN K$ = " <7> on keypad" Info = 2 k2$ = " ......." END IF IF K% = -29440 THEN K$ = " <8> on keypad" Info = 2 k2$ = " " END IF IF K% = -31744 THEN K$ = " <9> on keypad" Info = 2 k2$ = " ...." END IF IF K% = 20992 THEN K$ = "" IF K% = 24064 THEN K$ = " F1" IF K% = 24320 THEN K$ = " F2" IF K% = 24576 THEN K$ = " F3" IF K% = 24832 THEN K$ = " F4" IF K% = 25088 THEN K$ = " F5" IF K% = 25344 THEN K$ = " F6" IF K% = 25600 THEN K$ = " F7" IF K% = 25856 THEN K$ = " F8" IF K% = 26112 THEN K$ = " F9" IF K% = 26368 THEN K$ = " F10" IF K% = 3584 THEN K$ = " " IF K% = 26624 THEN K$ = " F1" IF K% = 26880 THEN K$ = " F2" IF K% = 27136 THEN K$ = " F3" IF K% = 27392 THEN K$ = " F4" IF K% = 27648 THEN K$ = " F5" IF K% = 27904 THEN K$ = " F6" IF K% = 28160 THEN K$ = " F7" IF K% = 28416 THEN K$ = " F8" IF K% = 28672 THEN K$ = " F9" IF K% = 28928 THEN K$ = " F10" RETURN cvi.information: COLOR 15, 0: CLS REDIM Cvi.Info$(1 TO 23) Cvi.Info$(1) = "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" Cvi.Info$(2) = "³ Use The CVI Command To Trap Keyboard Keys : ³" Cvi.Info$(3) = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´" Cvi.Info$(4) = "³ The CVI QuickBasic command returns unique numbers which ³" Cvi.Info$(5) = "³ enable the programmer to employ almost all keys of the ³" Cvi.Info$(6) = "³ keyboard. Set up a double DO: LOOP as follows: ³" Cvi.Info$(7) = "³ (An example only:) ³" Cvi.Info$(8) = "³ DO ³" Cvi.Info$(9) = "³ DO ³" Cvi.Info$(10) = "³ PressKey$ = INKEY$ ³" Cvi.Info$(11) = "³ LOOP until LEN(PressKey$) > 0 ³" Cvi.Info$(12) = "³ KeyPressed% = CVI(PressKey$ + CHR$(0)) ³" Cvi.Info$(13) = "³ IF KeyPressed = 15104 then ' Key ³" Cvi.Info$(14) = "³ GOSUB information ³" Cvi.Info$(15) = "³ ELSEIF KeyPressed = 27 THEN ' Key ³" Cvi.Info$(16) = "³ cls: end ³" Cvi.Info$(17) = "³ END IF ³" Cvi.Info$(18) = "³ LOOP ³" Cvi.Info$(19) = "³ ³" Cvi.Info$(20) = "³ The programmer can continue to create a long list of ³" Cvi.Info$(21) = "³ ELSEIF commands to take care of the key presses. ³" Cvi.Info$(22) = "³ ³" Cvi.Info$(23) = "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ[ Press To Exit ]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" FOR InfoScreen% = 1 TO 23 LOCATE InfoScreen% + 1, 11, 0, 0, 0 CALL MQPrint(Cvi.Info$(InfoScreen%), 15) NEXT LOCATE 3, 20 CALL MQPrint("Use The CVI Command To Trap Keyboard Keys :", 11) LOCATE 24, 30: CALL MQPrint("Press To Exit", 11) LOCATE 24, 37, 0, 0, 0: CALL MQPrint("Esc", 15) DO: LOOP UNTIL INKEY$ = CHR$(27) RETURN inkeyhunt: COLOR 15, 0: CLS CALL Box0(1, 22, 3, 58, 1, 15) LOCATE 2, 25, 0, 0, 0 CALL MQPrint("I n k e y $ K e y T r a p", 15) CALL Box0(4, 3, 25, 77, 1, 15) Ms1$ = "Press to exit or for information. Please do not press these" Ms2$ = "keys otherwise. is number 27 and is number -59." Ms3$ = "Ã" + STRING$(73, 196) + "´" Ms4$ = "Press any key or key combination to find the INKEY$ keycode number:" LOCATE 5, 5: CALL MQPrint(Ms1$, 15) LOCATE 5, 12: CALL MQPrint("Esc", 11) LOCATE 5, 29: CALL MQPrint("F1", 11) LOCATE 6, 5: CALL MQPrint(Ms2$, 15) LOCATE 7, 3: CALL MQPrint(Ms3$, 15) LOCATE 8, 5: CALL MQPrint(Ms4$, 15) LOCATE 9, 3, 0, 0, 0: CALL MQPrint(Ms3$, 15) INKCol% = 9 INKRow% = 9 DO DO q$ = INKEY$ LOOP UNTIL LEN(q$) IF ASC(q$) = 0 THEN q% = -ASC(RIGHT$(q$, 1)) ELSE q% = ASC(q$) END IF IF q$ = CHR$(27) THEN 'Esc - return to main menu RETURN ELSEIF q% = -59 THEN 'F1 key GOSUB inkey.information GOTO inkeyhunt ELSE Info = 0: Info3 = 0 GOSUB find.inkey.number GOSUB set.ink.row.col LOCATE INKRow%, INKCol%, 0, 0, 0 IF q% = 10 THEN CALL MQPrint(" J or j....... = 10", 15) GOSUB set.ink.row.col LOCATE INKRow%, INKCol%: CALL MQPrint(" ...... = 10", 15) LOCATE INKRow%, INKCol% - 1, 0, 0, 0: CALL MQPrint("*", 14) LOCATE 25, 35: CALL MQPrint("[ *Same ]", 15) LOCATE 25, 37: CALL MQPrint("*", 14) ELSEIF q% = 16 THEN CALL MQPrint(" P or p....... = 16", 15) GOSUB set.ink.row.col LOCATE INKRow%, INKCol%: CALL MQPrint(" = 16", 15) LOCATE INKRow%, INKCol% - 1, 0, 0, 0: CALL MQPrint("*", 14) LOCATE 25, 35: CALL MQPrint("[ *Same ]", 15) LOCATE 25, 37: CALL MQPrint("*", 14) ELSEIF q% <> 10 AND q% <> 16 THEN IF LEN(q$) <= 20 THEN NumDots% = 20 - LEN(q$) END IF CALL MQPrint(q$ + STRING$(NumDots%, ".") + " = " + STR$(q%), 15) IF Info = 2 THEN LOCATE INKRow%, INKCol% - 1: CALL MQPrint("*", 14) GOSUB set.ink.row.col LOCATE INKRow%, INKCol%, 0, 0, 0 CALL MQPrint(q2$ + " = " + STR$(q%), 15) LOCATE INKRow%, INKCol% - 1: CALL MQPrint("*", 14) LOCATE 25, 35: CALL MQPrint("[ *Same ]", 15) LOCATE 25, 37: CALL MQPrint("*", 14) END IF IF Info3 = 3 THEN GOSUB set.ink.row.col LOCATE INKRow%, INKCol%, 0, 0, 0 CALL MQPrint(q3$ + " = " + STR$(q%), 15) LOCATE INKRow%, INKCol% - 1: CALL MQPrint("*", 14) END IF IF Info4 = 4 THEN GOSUB set.ink.row.col LOCATE INKRow%, INKCol%, 0, 0, 0 CALL MQPrint(q4$ + " = " + STR$(q%), 15) LOCATE INKRow%, INKCol% - 1: CALL MQPrint("*", 14) END IF Info = 0 'Info2 = 0 Info3 = 0 Info4 = 0 END IF END IF LOOP find.inkey.number: IF q% = 97 THEN q$ = "a" IF q% = 98 THEN q$ = "b" IF q% = 99 THEN q$ = "c" IF q% = 100 THEN q$ = "d" IF q% = 101 THEN q$ = "e" IF q% = 102 THEN q$ = "f" IF q% = 103 THEN q$ = "g" IF q% = 104 THEN q$ = "h" IF q% = 105 THEN q$ = "i" IF q% = 106 THEN q$ = "j" IF q% = 107 THEN q$ = "k" IF q% = 108 THEN q$ = "l" IF q% = 109 THEN q$ = "m" IF q% = 110 THEN q$ = "n" IF q% = 111 THEN q$ = "o" IF q% = 112 THEN q$ = "p" IF q% = 113 THEN q$ = "q" IF q% = 114 THEN q$ = "r" IF q% = 115 THEN q$ = "s" IF q% = 116 THEN q$ = "t" IF q% = 117 THEN q$ = "u" IF q% = 118 THEN q$ = "v" IF q% = 119 THEN q$ = "w" IF q% = 120 THEN q$ = "x" IF q% = 121 THEN q$ = "y" IF q% = 122 THEN q$ = "z" IF q% = 65 THEN q$ = "A" IF q% = 66 THEN q$ = "B" IF q% = 67 THEN q$ = "C" IF q% = 68 THEN q$ = "D" IF q% = 69 THEN q$ = "E" IF q% = 70 THEN q$ = "F" IF q% = 71 THEN q$ = "G" IF q% = 72 THEN q$ = "H" IF q% = 73 THEN q$ = "I" IF q% = 74 THEN q$ = "J" IF q% = 75 THEN q$ = "K" IF q% = 76 THEN q$ = "L" IF q% = 77 THEN q$ = "M" IF q% = 78 THEN q$ = "N" IF q% = 79 THEN q$ = "O" IF q% = 80 THEN q$ = "P" IF q% = 81 THEN q$ = "Q" IF q% = 82 THEN q$ = "R" IF q% = 83 THEN q$ = "S" IF q% = 84 THEN q$ = "T" IF q% = 85 THEN q$ = "U" IF q% = 86 THEN q$ = "V" IF q% = 87 THEN q$ = "W" IF q% = 88 THEN q$ = "X" IF q% = 89 THEN q$ = "Y" IF q% = 90 THEN q$ = "Z" IF q% = 48 THEN q$ = "0" IF q% = 49 THEN q$ = "1" IF q% = 50 THEN q$ = "2" IF q% = 51 THEN q$ = "3" IF q% = 52 THEN q$ = "4" IF q% = 53 THEN q$ = "5" IF q% = 54 THEN q$ = "6" IF q% = 55 THEN q$ = "7" IF q% = 56 THEN q$ = "8" IF q% = 57 THEN q$ = "9" IF q% = -59 THEN q$ = "F1" IF q% = -60 THEN q$ = "F2" IF q% = -61 THEN q$ = "F3" IF q% = -62 THEN q$ = "F4" IF q% = -63 THEN q$ = "F5" IF q% = -64 THEN q$ = "F6" IF q% = -65 THEN q$ = "F7" IF q% = -66 THEN q$ = "F8" IF q% = -67 THEN q$ = "F9" IF q% = -68 THEN q$ = "F10" IF q% = 96 THEN q$ = "< ` >" IF q% = 126 THEN q$ = "< ~ >" IF q% = 33 THEN q$ = "< ! >" IF q% = 64 THEN q$ = "< @ >" IF q% = 35 THEN q$ = "< # >" IF q% = 36 THEN q$ = "< $ >" IF q% = 37 THEN q$ = "< % >" IF q% = 94 THEN q$ = "< ^ >" IF q% = 38 THEN q$ = "< & >" IF q% = 42 THEN q$ = "< * >" IF q% = 40 THEN q$ = "< ( >" IF q% = 41 THEN q$ = "< ) >" IF q% = 45 THEN q$ = "< - > Dash" IF q% = 61 THEN q$ = "< = >" IF q% = 95 THEN q$ = "< _ > Underline" IF q% = 43 THEN q$ = "< + >" 'IF q% = 9 THEN q$ = "" 'go down to q% = 9 IF q% = 32 THEN q$ = "" IF q% = 91 THEN q$ = "< [ >" IF q% = 93 THEN q$ = "< ] >" IF q% = 92 THEN q$ = "< \ >" IF q% = 47 THEN q$ = "< / >" IF q% = 123 THEN q$ = "< { >" IF q% = 125 THEN q$ = "< } >" IF q% = 124 THEN q$ = "< | >" 'IF q% = 8 THEN q$ = "" IF q% = 27 THEN q$ = "" IF q% = 44 THEN q$ = "< , > Comma" IF q% = 46 THEN q$ = "< . > Period" IF q% = -82 THEN q$ = "" IF q% = -83 THEN q$ = "" IF q% = -71 THEN q$ = "" IF q% = -79 THEN q$ = "" IF q% = -73 THEN q$ = "" IF q% = -81 THEN q$ = "" IF q% = -72 THEN q$ = "" IF q% = -80 THEN q$ = "" IF q% = -77 THEN q$ = "" IF q% = -75 THEN q$ = "" IF q% = 60 THEN q$ = "( < )" IF q% = 62 THEN q$ = "( > )" IF q% = 63 THEN q$ = "< ? >" IF q% = 34 THEN q$ = "< " + CHR$(34) + " > Apostrophe" IF q% = 59 THEN q$ = "< ; > Semi-colon" IF q% = 58 THEN q$ = "< : > Colon" IF q% = 1 THEN q$ = " A or a" Info = 2 q2$ = " <1 on keypad> " END IF IF q% = 2 THEN q$ = " B or b" Info = 2 q2$ = " <2 on keypad> " Info3 = 3 q3$ = "<" + CHR$(25) + "> on keypad.." END IF IF q% = 3 THEN q$ = " C or c" Info = 2 q2$ = " <3 on keypad> " END IF IF q% = 4 THEN q$ = " D or d" Info = 2 q2$ = "<4> on keypad.." Info3 = 3 q3$ = "<" + CHR$(17) + "-> on keypad." END IF IF q% = 5 THEN q$ = " E or e" Info = 2 q2$ = " <5> on keypad " END IF IF q% = 6 THEN q$ = " F or f" Info = 2 q2$ = " <6> on keypad " Info3 = 3 q3$ = " <-" + CHR$(16) + "> on keypad" END IF IF q% = 7 THEN q$ = " G or g" Info = 2 q2$ = " <7> on keypad " END IF IF q% = 8 THEN q$ = " H or h" Info = 2 q2$ = "<8><" + CHR$(24) + ">on keypad" Info3 = 3 q3$ = " " Info4 = 4 q4$ = "........." END IF IF q% = 9 THEN q$ = " I or i" Info = 2 q2$ = " <9> on keypad." Info3 = 3 q3$ = " Key..........." END IF IF q% = 10 THEN q$ = " J or j" Info = 2 q2$ = " ......" END IF IF q% = 11 THEN q$ = " K or k" IF q% = 12 THEN q$ = " L or l" IF q% = 13 THEN q$ = " M or m" Info = 2 q2$ = "............." END IF IF q% = 14 THEN q$ = " N or n" IF q% = 15 THEN q$ = " O or o" IF q% = 16 THEN q$ = " P or p" IF q% = 17 THEN q$ = " Q or q" IF q% = 18 THEN q$ = " R or r" IF q% = 19 THEN q$ = " S or s" IF q% = 20 THEN q$ = " T or t" IF q% = 21 THEN q$ = " U or u" IF q% = 22 THEN q$ = " V or v" IF q% = 23 THEN q$ = " W or w" IF q% = 24 THEN q$ = " X or x" IF q% = 25 THEN q$ = " Y or y" IF q% = 26 THEN q$ = " Z or z" IF q% = -3 THEN q$ = "<2> under F keys" IF q% = 30 THEN q$ = "<6> under F keys" IF q% = 29 THEN q$ = " < ] >" IF q% = -84 THEN q$ = " F1" IF q% = -85 THEN q$ = " F2" IF q% = -86 THEN q$ = " F3" IF q% = -87 THEN q$ = " F4" IF q% = -88 THEN q$ = " F5" IF q% = -89 THEN q$ = " F6" IF q% = -90 THEN q$ = " F7" IF q% = -91 THEN q$ = " F8" IF q% = -92 THEN q$ = " F9" IF q% = -93 THEN q$ = " F10" IF q% = -15 THEN q$ = " " Info = 2 q2$ = " ....." END IF IF q% = -119 THEN q$ = " " IF q% = -132 THEN q$ = " " IF q% = -118 THEN q$ = " " 'IF q% = -116 THEN q$ = " " 'IF q% = -115 THEN q$ = " " IF q% = 28 THEN q$ = " < \ >" IF q% = 127 THEN q$ = " " IF q% = 31 THEN q$ = " < - >" IF q% = -30 THEN q$ = " A or a" IF q% = -48 THEN q$ = " B or b" IF q% = -46 THEN q$ = " C or c" IF q% = -32 THEN q$ = " D or d" IF q% = -18 THEN q$ = " E or e" IF q% = -33 THEN q$ = " F or f" IF q% = -34 THEN q$ = " G or g" IF q% = -35 THEN q$ = " H or h" IF q% = -23 THEN q$ = " I or i" IF q% = -36 THEN q$ = " J or j" IF q% = -37 THEN q$ = " K or k" IF q% = -38 THEN q$ = " L or l" IF q% = -50 THEN q$ = " M or m" IF q% = -49 THEN q$ = " N or n" IF q% = -24 THEN q$ = " O or o" IF q% = -25 THEN q$ = " P or p" IF q% = -16 THEN q$ = " Q or q" IF q% = -19 THEN q$ = " R or r" IF q% = -31 THEN q$ = " S or s" IF q% = -20 THEN q$ = " T or t" IF q% = -22 THEN q$ = " U or u" IF q% = -47 THEN q$ = " V or v" IF q% = -17 THEN q$ = " W or w" IF q% = -45 THEN q$ = " X or x" IF q% = -21 THEN q$ = " Y or y" IF q% = -44 THEN q$ = " Z or z" IF q% = -120 THEN q$ = " <1>" IF q% = -121 THEN q$ = " <2>" IF q% = -122 THEN q$ = " <3>" IF q% = -123 THEN q$ = " <4>" IF q% = -124 THEN q$ = " <5>" IF q% = -125 THEN q$ = " <6>" IF q% = -126 THEN q$ = " <7>" IF q% = -127 THEN q$ = " <8>" IF q% = -128 THEN q$ = " <9>" IF q% = -129 THEN q$ = " <0>" IF q% = -130 THEN q$ = " < - >" IF q% = -131 THEN q$ = " < = >" 'IF q% = 8 THEN q$ = "<>On KeyPad" 'IF q% = 2 THEN q$ = "<>On KeyPad" 'IF q% = 6 THEN q$ = "<->On KeyPad" 'IF q% = 4 THEN q$ = "<->On KeyPad" IF q% = -117 THEN q$ = " <1> on keypad" Info = 2 q2$ = " ........" END IF IF q% = -118 THEN q$ = " <3> on keypad" Info = 2 q2$ = " .." END IF IF q% = -115 THEN q$ = " <4> on keypad" Info = 2 q2$ = " " 'Info3 = 3 'q3$ = " <5> on keypad" END IF IF q% = -116 THEN q$ = " <6> on keypad" Info = 2 q2$ = " " END IF IF q% = -119 THEN q$ = " <7> on keypad" Info = 2 q2$ = " ......." END IF IF q% = -132 THEN q$ = " <9> on keypad" Info = 2 q2$ = " ...." END IF IF q% = -94 THEN q$ = " F1" IF q% = -95 THEN q$ = " F2" IF q% = -96 THEN q$ = " F3" IF q% = -97 THEN q$ = " F4" IF q% = -98 THEN q$ = " F5" IF q% = -99 THEN q$ = " F6" IF q% = -100 THEN q$ = " F7" IF q% = -101 THEN q$ = " F8" IF q% = -102 THEN q$ = " F9" IF q% = -103 THEN q$ = " F10" IF q% = -104 THEN q$ = " F1" IF q% = -105 THEN q$ = " F2" IF q% = -106 THEN q$ = " F3" IF q% = -107 THEN q$ = " F4" IF q% = -108 THEN q$ = " F5" IF q% = -109 THEN q$ = " F6" IF q% = -110 THEN q$ = " F7" IF q% = -111 THEN q$ = " F8" IF q% = -112 THEN q$ = " F9" IF q% = -113 THEN q$ = " F10" IF q% = -53 THEN q$ = " < / >" IF q% = -52 THEN q$ = " < . >" IF q% = -51 THEN q$ = " < , >" IF q% = -43 THEN q$ = " < \ >" IF q% = -27 THEN q$ = " < ] >" IF q% = -26 THEN q$ = " < [ >" IF q% = -14 THEN q$ = " " IF q% = -28 THEN q$ = " " IF q% = -157 THEN q$ = " < -" + CHR$(16) + " >" IF q% = -155 THEN q$ = " < " + CHR$(17) + "- >" IF q% = -160 THEN q$ = " < " + CHR$(25) + " >" IF q% = -152 THEN q$ = " < " + CHR$(24) + " >" IF q% = -162 THEN q$ = " " IF q% = -163 THEN q$ = " " IF q% = -151 THEN q$ = " " IF q% = -159 THEN q$ = " " IF q% = -153 THEN q$ = " " IF q% = -161 THEN q$ = " " IF q% = -165 THEN q$ = " " RETURN inkey.information: COLOR 15, 0: CLS REDIM Inkey.Info$(1 TO 24) Inkey.Info$(1) = "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" Inkey.Info$(2) = "³ Use The INKEY$ Command To Trap Keyboard Keys : ³" Inkey.Info$(3) = "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´" Inkey.Info$(4) = "³ The INKEY$ QuickBasic command returns unique numbers ³" Inkey.Info$(5) = "³ which enable the programmer to employ almost all ³" Inkey.Info$(6) = "³ keyboard keys. But be careful to set it up correctly. ³" Inkey.Info$(7) = "³ (An example below - Notice the double DO:LOOP): ³" Inkey.Info$(8) = "³ DO ³" Inkey.Info$(9) = "³ DO ³" Inkey.Info$(10) = "³ T$ = INKEY$ ³" Inkey.Info$(11) = "³ LOOP UNTIL LEN(T$) ³" Inkey.Info$(12) = "³ IF ASC(T$) = 0 THEN ³" Inkey.Info$(13) = "³ T% = -ASC(RIGHT$(T$, 1)) ³" Inkey.Info$(14) = "³ ELSE ³" Inkey.Info$(15) = "³ T% = ASC(T$) ³" Inkey.Info$(16) = "³ END IF ³" Inkey.Info$(17) = "³ IF T% = -59 THEN ³" Inkey.Info$(18) = "³ CLS: PRINT " + CHR$(34) + "You pressed " + CHR$(34) + " ³" Inkey.Info$(19) = "³ END IF ³" Inkey.Info$(20) = "³ LOOP ³" Inkey.Info$(21) = "³ The programmer can continue to program a long list of ³" Inkey.Info$(22) = "³ IF and ELSEIF commands to take care of the key presses. ³" Inkey.Info$(23) = "³ ³" Inkey.Info$(24) = "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ[ Press To Exit ]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" FOR InfoScreen% = 1 TO 24 LOCATE InfoScreen% + 1, 11, 0, 0, 0 CALL MQPrint(Inkey.Info$(InfoScreen%), 15) NEXT LOCATE 3, 18: CALL MQPrint("Use The INKEY$ Command To Trap Keyboard Keys :", 11) LOCATE 25, 30: CALL MQPrint("Press To Exit", 11) LOCATE 25, 37, 0, 0, 0: CALL MQPrint("Esc", 15) DO: LOOP UNTIL INKEY$ = CHR$(27) RETURN SUB BoxBoy (Title$, ULRow%, ULCol%, LRRow%, LRCol%, TitleRow%, TitleCol%, TitColr%, BoxColr%, BoxStyle%, Shadow%, ClearColr%) ' ' '+---------------------------------------------------------------------+ '| SUB written by Don Smith on March 25, 2002. Declared Public | '| Domain FreeWare. Other programmers may use this SUB without | '| naming me as the author. Don's EMail: smithdonb@earthlink.net | '| | '+-------------+-------------------------------------------------------+ '| Title$ | The title of the menu. To make a box without a title,| '| | use: Title$ = "". When there is no Title, the cross | '| | bar is not deployed. | '|-------------+-------------------------------------------------------| '| ULRow% | The upper left row to place the box. | '|-------------+-------------------------------------------------------| '| ULCol% | The upper left column to place the box. | '|-------------+-------------------------------------------------------| '| LRRow% | The lower right row to place the box. | '|-------------+-------------------------------------------------------| '| LRCol% | The lower right column to place the box. | '|-------------+-------------------------------------------------------| '| TitleRow% | The row to place the title. | '|-------------+-------------------------------------------------------| '| TitleCol% | The column to place the title. | '|-------------+-------------------------------------------------------| '| TitColr% | The menu color of the title. | '|-------------+-------------------------------------------------------| '| BoxColr% | The color of the box itself. | '+-------------+-------------------------------------------------------+ '| Style% | Style% equals 1 - Single line around box | '| | Style% equals 2 - Double line around box | '+-------------+-------------------------------------------------------+ '| Shadow% | If Shadow% equals 0, there will be no shadow . | '| | If Shadow% equals 1, there will be a right shadow. | '| | If Shadow% equals 2, there will be a left shadow | '| +-------------------------------------------------------+ '| | NOTE: | '| | ---- | '| | When a shadow is used, the underlying text will | '| | be saved and printed with COLOR 8, 0 (very dim). | | '| | This causes the shadow to look like a real shadow. | '+-------------+-------------------------------------------------------+ '| ClearColr% | What color (0-7) to clear screen before making box. | '| | To disable this feature, use ClearColr% = 1000 | '+-------------+-------------------------------------------------------+ ' ' IF ClearColr% <> 1000 THEN COLOR , ClearColr%: CLS END IF ' make.box: IF BoxStyle% = 1 THEN 'Single Line ULCorner$ = CHR$(218) URCorner$ = CHR$(191) HorLine$ = CHR$(196) LeftSide$ = CHR$(195) RightSide$ = CHR$(180) VertLine$ = CHR$(179) LLCorner$ = CHR$(192) LRCorner$ = CHR$(217) ELSEIF BoxStyle% = 2 THEN 'Double Line ULCorner$ = CHR$(201) URCorner$ = CHR$(187) HorLine$ = CHR$(205) LeftSide$ = CHR$(199) RightSide$ = CHR$(182) VertLine$ = CHR$(186) LLCorner$ = CHR$(200) LRCorner$ = CHR$(188) END IF Title.Length% = LEN(Title$) 'ÚÄÄÄ¿ or ÉÍÍÍ» LOCATE ULRow%, ULCol% CALL MQPrint(" " + ULCorner$ + STRING$(LRCol% - ULCol%, HorLine$) + URCorner$ + " ", BoxColr%) '³ ³ or º º LOCATE ULRow% + 1, ULCol% CALL MQPrint(" " + VertLine$ + SPACE$(LRCol% - ULCol%) + VertLine$ + " ", BoxColr%) IF Title$ <> "" THEN 'ÃÄÄÄ´ or ÇÄÄĶ 'made cross bar if there is a title LOCATE ULRow% + 2, ULCol% CALL MQPrint(" " + LeftSide$ + STRING$(LRCol% - ULCol%, 196) + RightSide$ + " ", BoxColr%) ELSEIF Title$ = "" THEN LOCATE ULRow% + 2, ULCol% CALL MQPrint(" " + VertLine$ + SPACE$(LRCol% - ULCol%) + VertLine$ + " ", BoxColr%) END IF '³ ³ or º º FOR Print.Box = 1 TO (LRRow% - ULRow%) - 3 LOCATE ULRow% + Print.Box% + 2, ULCol% CALL MQPrint(" " + VertLine$ + SPACE$(LRCol% - ULCol%) + VertLine$ + " ", BoxColr%) NEXT 'ÀÄÄÄÙ or ÈÍÍͼ LOCATE LRRow%, ULCol% CALL MQPrint(" " + LLCorner$ + STRING$(LRCol% - ULCol%, HorLine$) + LRCorner$ + " ", BoxColr%) LOCATE TitleRow%, TitleCol% CALL MQPrint(Title$, TitColr%) END SUB SUB CMenu (M$(), Row%, Col%, RegColr%, HiLiteColr%, MaxItems%, LenLine%, SD%, Selection%, ExitCode%) ' +---------------------------------------------------------------------+ ' | CMenu means "Chico Menu". Chico means little or tiny in Spanish. | ' | I first developed this menu while revising PrintDoc.Bas, | ' | on 03/28/2002. This particular version of Chico Menu is designed | ' | to be used with the QuickPak Quick Library and the Pro Library for | ' | compiling. CMenu differs from ChicMenu (Chico Menu) in that it can | ' | (1) double space items if needed, (2) insert horizontal line(s) in | ' | the menu and (3) it is a real SUB. | ' +---------------------------------------------------------------------+ ' | Chico Menu is a Public Domain FreeWare program by Don Smith, | ' | EMail: smithdonb@earthlink.net | ' +---------------------------------------------------------------------+ ' +--------------+------------------------------------------------------+ ' | M$() | REDIM M$(MaxItem% + 1). REDIM in main program. | ' +--------------+------------------------------------------------------+ ' | Row% | Row to place menu. Set Row% = 1 in main program | ' | | to always hi-light the first item. To allow the | ' | | menu to reenter on last hi-lighted item, place | ' | | Row% above the loop. | ' +--------------+------------------------------------------------------+ ' | Col% | The column to place menu. | ' +--------------+------------------------------------------------------+ ' | RegColr% | RegColr% is the menu color stated as one number. | ' +--------------+------------------------------------------------------+ ' | HiLiteColr% | HiLiteColr% is color of hi-lighted menu item. | ' | | I usually set this to 15 (White on black). | ' +--------------+------------------------------------------------------+ ' | MaxItems% | The number of menu items. | ' +--------------+------------------------------------------------------+ ' | LenLine% | Length of horizontal line. Example: M$(4) = "-" | ' +--------------+------------------------------------------------------+ ' | SD% | SD% = 1 (Menu is single spaced) | ' | | SD% = 2 (Menu is double spaced) | ' +--------------+------------------------------------------------------+ ' | Selection% | The Selection is always given as a number. | ' | | IMPORTANT. PLEASE READ -> Every menu item is counted| ' | | as a number, including horizontal lines, so take | ' | | that into consideration when trapping after the | ' | | SUB exits. All selections are counted as a number, | ' | | even letters. Letter E for example would be | ' | | Selection% = 5. If there were a horizontal line | ' | | above E, then Selection% = 6. | ' | | | ' | | CMenu.Bas self-reads the extreme left hand | ' | | character of each menu item, allowing the user | ' | | to press that number or letter. | ' | | | ' | | Example: M$(3) = "3. Utilities" | ' | | | ' | | Here, the "3" is the number read. When the user | ' | | presses "3", the SUB exits with Selection% = 3. | ' | | | ' | | Letters also may be used: | ' | | | ' | | Example: M$(3) = "C. Utilities" | ' | | | ' | | Here, the "C" is the letter read. When the user | ' | | presses "C", the SUB with the Selection% = 3. | ' | | | ' | | Selection% = 3 will become Selection% = 4 if | ' | | there exists a horizontal line above M$(3). | ' | | | ' +--------------+------------------------------------------------------+ ' | ExitCode% | ExitCode% is the last key pressed. is | ' | | ExitCode% = 27 and is ExitCode% = 13. | ' | | If an key were pressed, then ExitCode% should | ' | | be renamed as ExitCode% = 1 for , and | ' | | ExitCode% = 10 for . See explanation | ' | | below. | ' +--------------+------------------------------------------------------+ FOR Jefe% = 1 TO MaxItems% HotKey$ = HotKey$ + LEFT$(M$(Jefe%), 1) NEXT LetrOrNum% = 0 HotKey$ = UCASE$(HotKey$) 'IF Selection% = 0 THEN Selection% = 1 FindRow% = Row% FOR xyz% = 1 TO MaxItems% LOCATE FindRow%, Col%, 0 IF LEFT$(M$(xyz%), 1) = "-" THEN CALL MQPrint(STRING$(LenLine%, CHR$(196)), RegColr%) ELSE CALL MQPrint(" " + M$(xyz%) + " ", RegColr%) END IF FindRow% = Row% + (xyz% * SD%) NEXT DO LOCATE Row% + (Selection% * SD%) - SD%, Col%, 0 CALL MQPrint(" " + M$(Selection%) + " ", HiLiteColr%) DO K$ = INKEY$ LOOP UNTIL LEN(K$) > 0 K% = CVI(K$ + CHR$(0)) IF K% = 13 THEN ExitCode% = 13 EXIT SUB ELSEIF K% = 15104 THEN 'F1 ExitCode% = 1 EXIT SUB ELSEIF K% = 27 THEN 'Press and exit COLOR 7, 0: CLS : LOCATE 1, 1, 1, 6, 7: END 'ExitCode% = 27 'EXIT SUB 'K% = 27 K% = 122 is last letter, or "z". ELSEIF K% > 27 AND K% < 123 THEN IF K$ <> "-" THEN LetrOrNum% = INSTR(HotKey$, UCASE$(K$)) IF LetrOrNum% <> 0 THEN Selection% = LetrOrNum% ExitCode% = K% EXIT SUB END IF END IF ELSEIF K% = 20480 THEN ' GOSUB up.or.down ELSEIF K% = 18432 THEN ' GOSUB up.or.down END IF LOOP up.or.down: LOCATE Row% + (Selection% * SD%) - SD%, Col%, 0 CALL MQPrint(" " + M$(Selection%) + " ", RegColr%) IF K% = 18432 THEN ' Selection% = Selection% - 1 IF Selection% = 0 THEN Selection% = MaxItems% 'IF M$(Selection%) = "-" THEN ' Selection% = Selection% - 1 'END IF ELSEIF K% = 20480 THEN ' Selection% = Selection% + 1 IF Selection% > MaxItems% THEN Selection% = 1 'IF M$(Selection%) = "-" THEN ' Selection% = Selection% + 1 'END IF ELSE Selection% = LetrOrNum% END IF RETURN END SUB