home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / vrac / dnalib7a.zip / LINEEDIT.BAS < prev    next >
BASIC Source File  |  1994-05-14  |  4KB  |  192 lines

  1. DECLARE SUB CalcByte(Attr%,LowByte%,HiByte%)
  2. DECLARE SUB Clicked(Rgt%,Lft%,Row%,Col%)
  3. DECLARE SUB HideCursor()
  4. DECLARE SUB ShowCursor()
  5. DECLARE FUNCTION InsertKey%()
  6. DECLARE FUNCTION LeftButtonReleased%()
  7.  
  8. SUB LineEdit(Allow$,Text$,Mouse%,MouseRow%,MouseCol%,Fill%,Row%,Col%,EditKey%,Attr%) PUBLIC
  9.  
  10. $CODE SEG "DNASEG1"
  11.  
  12. CalcByte Attr%,FGround%,BGround%
  13.  
  14. IF Mouse% THEN HideCursor
  15.  
  16. Finished% = 0
  17.  
  18. LOCATE Row%,Col%
  19. COLOR FGround%,BGround%
  20.  
  21. IF Text$ = STRING$(LEN(Text$),32) THEN
  22.   Temp$ = STRING$(LEN(Text$),Fill%)
  23.   PRINT Temp$;
  24. ELSE
  25.   a% = LEN(Text$):b% = LEN(RTRIM$(Text$))
  26.   Temp$ = RTRIM$(Text$) + STRING$(a% - b%,Fill%)
  27.   PRINT Temp$;
  28. END IF
  29.  
  30. IF Editkey% = 255 THEN EXIT SUB
  31.  
  32. CursorPosition% = Col% + b%
  33.  
  34. DO
  35.  
  36. IF CursorPosition% = Col% + LEN(Text$) THEN
  37.   LOCATE Row%,CursorPosition%,0
  38. ELSE
  39.   IF InsertKey% THEN
  40.     LOCATE Row%,CursorPosition%,1,0,13    'Block Cusor
  41.   ELSE
  42.     LOCATE Row%,CursorPosition%,1,11,12   'Normal Cursor
  43.   END IF
  44. END IF
  45.  
  46. WHILE NOT INSTAT
  47.   IF Mouse% THEN
  48.     ShowCursor
  49.     Clicked Rgt%,Lft%,MRow%,MCol%
  50.     IF LeftButtonReleased% THEN
  51.       MouseRow% = MRow%
  52.       MouseCol% = MCol%
  53.       Editkey% = -255
  54.       GOTO KeyBoardRoutine
  55.     END IF
  56.   END IF
  57. WEND
  58. Ky$ = INKEY$
  59.  
  60.  
  61. IF LEN(Ky$) = 1 THEN
  62.   EditKey% = ASC(Ky$)
  63. ELSE
  64.   EditKey% = -ASC(RIGHT$(Ky$,1))
  65. END IF
  66.  
  67. KeyBoardRoutine:
  68.  
  69. SELECT CASE EditKey%
  70.  
  71.     CASE 8     'BackSpace
  72.  
  73.       IF CursorPosition% > Col% THEN
  74.         A$ = LEFT$(Temp$,CursorPosition% - Col% - 1)
  75.         B$ = RIGHT$(Temp$,Col% + LEN(Text$) - CursorPosition%)
  76.         Temp$ = A$ + B$ + STRING$(LEN(Text$) - LEN(A$ + B$),Fill%)
  77.         DECR CursorPosition%
  78.             IF Mouse% THEN HideCursor
  79.         LOCATE Row%,Col%
  80.         PRINT Temp$;
  81.       END IF
  82.  
  83.     CASE 13,9,-72,-80  'EnterKey TabKey Up/Down ArrowKey
  84.  
  85.       A$ = LTRIM$(RTRIM$(Temp$,CHR$(Fill%)))
  86.       Text$ = A$ + SPACE$(LEN(Text$) - LEN(A$))
  87.       Finished% = 1
  88.  
  89.     CASE 27    'EscKey
  90.  
  91.       LOCATE Row%,Col%
  92.       COLOR FGround%,BGround%
  93.  
  94.       IF Text$ = STRING$(LEN(Text$),32) THEN
  95.         Temp$ = STRING$(LEN(Text$),Fill%)
  96.             IF Mouse% THEN HideCursor
  97.         PRINT Temp$;
  98.       ELSE
  99.         a% = LEN(Text$):b% = LEN(RTRIM$(Text$))
  100.         Temp$ = RTRIM$(Text$) + STRING$(a% - b%,Fill%)
  101.             IF Mouse% THEN HideCursor
  102.         PRINT Temp$;
  103.       END IF
  104.  
  105.       Finished% = 1
  106.  
  107.     CASE -71   'HomeKey
  108.  
  109.       CursorPosition% = Col%
  110.  
  111.     CASE -75   'LeftArrow
  112.  
  113.       IF CursorPosition% > Col% THEN
  114.         DECR CursorPosition%
  115.       END IF
  116.  
  117.     CASE -77   'RightArrow
  118.  
  119.       IF CursorPosition% < Col% + LEN(RTRIM$(Temp$,(CHR$(Fill%)))) THEN
  120.         INCR CursorPosition%
  121.       END IF
  122.  
  123.     CASE -79   'EndKey
  124.  
  125.       CursorPosition% = Col% + LEN(RTRIM$(Temp$,(CHR$(Fill%))))
  126.  
  127.     CASE -82   'InsertKey
  128.  
  129.       IF InsertKey% THEN
  130.         LOCATE ,,,0,13
  131.       ELSE
  132.         LOCATE ,,,11,12
  133.       END IF
  134.  
  135.     CASE -83   'DeleteKey
  136.  
  137.       IF CursorPositon% > Col% - 1 OR CursorPosition% < Col% + LEN(Text$) THEN
  138.         A$ = LEFT$(Temp$,CursorPosition% - Col%)
  139.         B$ = RIGHT$(Temp$,Col% + LEN(Text$) - CursorPosition% - 1)
  140.         Temp$ = A$ + B$ + STRING$(LEN(Text$) - LEN(A$ + B$),Fill%)
  141.             IF Mouse% THEN HideCursor
  142.         LOCATE Row%,Col%
  143.         PRINT Temp$;
  144.       END IF
  145.  
  146.     CASE 32 TO 254
  147.       IF CursorPosition% < Col% + LEN(Text$) THEN
  148.             SELECT CASE LEFT$(Allow$,1)
  149.               CASE CHR$(24)
  150.                 Ky$ = UCASE$(Ky$)
  151.               CASE CHR$(25)
  152.                 Ky$ = LCASE$(Ky$)
  153.               CASE ELSE
  154.                 Ky$ = Ky$
  155.             END SELECT
  156.             IF INSTR(Ky$,ANY (Allow$)) THEN
  157.           IF InsertKey% THEN
  158.         A$ = LEFT$(Temp$,CursorPosition% - Col%)
  159.         B$ = RIGHT$(Temp$,Col% + LEN(Text$) - (CursorPosition% + 1))
  160.         Temp$ = A$ + Ky$ + B$
  161.                 IF Mouse% THEN HideCursor
  162.         LOCATE Row%,Col%
  163.         PRINT Temp$;
  164.         INCR CursorPosition%
  165.           ELSE
  166.             A$ = LEFT$(Temp$,CursorPosition% - Col%)
  167.             B$ = RIGHT$(Temp$,Col% + LEN(Text$) - CursorPosition%)
  168.             C$ = LEFT$(B$,LEN(B$) - 1)
  169.             Temp$ = A$ + Ky$ + C$
  170.                 IF Mouse% THEN HideCursor
  171.             LOCATE Row%,Col%
  172.             PRINT Temp$;
  173.             INCR CursorPosition%
  174.           END IF
  175.             END IF
  176.       END IF
  177.  
  178.     CASE -255 'exit with mouse
  179.           A$ = LTRIM$(RTRIM$(Temp$,CHR$(Fill%)))
  180.       Text$ = A$ + SPACE$(LEN(Text$) - LEN(A$))
  181.       Finished% = 1
  182.  
  183.         CASE ELSE
  184.       BEEP
  185.  
  186. END SELECT
  187.  
  188. LOOP UNTIL Finished% = 1
  189.  
  190. END SUB
  191.  
  192.