home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / basic / bmag / anoedit.bas < prev    next >
Encoding:
BASIC Source File  |  1994-04-26  |  2.6 KB  |  65 lines

  1. '─ Area: F-QUICKBASIC ─────────────────────────────────────────────────────────
  2. '  Msg#: 398                                          Date: 21 Apr 94  22:05:02
  3. '  From: Bob Perkins                                  Read: Yes    Replied: No 
  4. '    To: Ronald Lewis                                 Mark:                     
  5. '  Subj: Re: Help!
  6. '──────────────────────────────────────────────────────────────────────────────
  7. '  Here's a little editor I whipped up for you.  I gave it a run-through, but by
  8. 'no means is this a fully tested routine.
  9.  
  10.  DECLARE FUNCTION editor$ (row%, column%, strlen%, edstr$)
  11.  t$ = "1234567890"
  12.  CLS
  13.  x$ = editor$(1, 1, 10, t$)
  14.  PRINT : PRINT x$
  15.  
  16.  FUNCTION editor$ (row%, column%, strlen%, edstr$)
  17.  text$ = edstr$: test% = LEN(text$)
  18.  IF test% < strlen% THEN text$ = text$ + SPACE$(strlen% - test%)
  19.  IF test% > strlen% THEN text$ = LEFT$(text$, strlen%)
  20.  LOCATE row%, column%, 1, 9, 11: p% = column%
  21.  PRINT text$; : LOCATE row%, column% + p% - 1
  22.  DO
  23.    a$ = INKEY$
  24.    IF LEN(a$) THEN
  25.      IF LEN(a$) = 1 THEN test% = ASC(a$) ELSE test% = -ASC(RIGHT$(a$, 1))
  26.      SELECT CASE test%
  27.        CASE 8                              'Backspace
  28.          p% = p% - 1
  29.          IF p% = 0 THEN
  30.            p% = 1
  31.          ELSE
  32.            text$ = LEFT$(text$, p% - 1) + MID$(text$, p% + 1) + " "
  33.          END IF
  34.        CASE -83                            'DELete key
  35.          text$ = MID$(text$, 1, p% - 1) + MID$(text$, p% + 1) + " "
  36.        CASE 27                             'ESC key pressed
  37.          text$ = "": EXIT DO
  38.        CASE -77                            'Right Arrow
  39.          IF p% < strlen% THEN p% = p% + 1
  40.        CASE -75                            'Left Arrow
  41.          IF p% > 1 THEN p% = p% - 1
  42.        CASE 13                             'ENTER (accept) key
  43.          EXIT DO
  44.        CASE -71                            'HOME key
  45.          p% = 1
  46.        CASE -79                            'END key
  47.          p% = strlen%
  48.        CASE 32 TO 255                      'Alpha-numeric key
  49.          IF insert% <> 0 AND LEN(RTRIM$(text$)) < strlen% THEN
  50.            text$ = MID$(text$, 1, p% - 1) + a$ + MID$(text$, p%, strlen% - p% -
  51. 1)
  52.            p% = p% + 1
  53.          ELSE
  54.            MID$(text$, p%) = a$: IF p% < strlen% THEN p% = p% + 1
  55.          END IF
  56.      END SELECT
  57.      LOCATE row%, column%: PRINT text$; : LOCATE row%, column% + p% - 1
  58.    END IF
  59.    'check state of insert key
  60.    DEF SEG = &H40: test% = PEEK(&H17): DEF SEG
  61.    IF test% THEN insert% = -1 ELSE insert% = 0
  62.  LOOP
  63.  IF LEN(text$) THEN editor$ = text$ ELSE editor$ = edstr$
  64.  END FUNCTION
  65.