home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / CLIPPER / SCRNUZ / HELP.PRG < prev    next >
Text File  |  1988-09-09  |  10KB  |  289 lines

  1. * Program : Help.prg
  2. * Author  : EDON CORPORATION
  3. * Date    : 9/9/88
  4. * Notes   : Routine to display help text
  5. *
  6. *   Syntax:         set key 28 to HELP
  7. *
  8. *
  9. *   Databases Used:
  10. *        Name      Contents
  11. *        ----      --------
  12. *        HELP      Un-compiled help displays
  13.  
  14. PARA proc, line, memvar
  15. PRIV save_sel, save_rec, help_sc, t, oldcolor, r, c, nlc, nrc
  16. PRIV ntr, nbr, n_text, corner, edit_sc, mvex
  17.  
  18. PUBLIC disp_name, box_st
  19.  
  20. IF UPPER(proc) = "HELP"
  21.    RETURN
  22. ENDIF
  23. SAVE SCREEN TO help_sc
  24. r = ROW()
  25. c = COL()
  26. oldcolor = SETCOLOR(h_color)
  27. IF UPPER(proc) = "MEMOEDIT"
  28.    @  1,0 SAY "╔══════════════════════════════════════════════════════════════════════════════╗"
  29.    @  2,0 SAY "║                This is a free format text entry data field.                  ║"
  30.    @  3,0 SAY "║                The following editing commands are available.                 ║"
  31.    @  4,0 SAY "╠═════════════╤═══════════════════════════════╤════════════════════════════════╣"
  32.    @  5,0 SAY "║     KEY     │        PRIMARY FUNCTION       │        CONTROL FUNCTION        ║"
  33.    @  6,0 SAY "╟─────────────┼───────────────────────────────┼────────────────────────────────╢"
  34.    @  7,0 SAY "║   Up Arrow  │  Move up one line             │               -                ║"
  35.    @  8,0 SAY "║  Down Arrow │  Move down one line           │               -                ║"
  36.    @  9,0 SAY "║  Left Arrow │  Move left one character      │  Move left one word            ║"
  37.    @ 10,0 SAY "║ Right Arrow │  Move right one character     │  Move right one word           ║"
  38.    @ 11,0 SAY "║    HOME     │  Beginning of current line    │  Beginning of field            ║"
  39.    @ 12,0 SAY "║     END     │  End of current line          │  End of field                  ║"
  40.    @ 13,0 SAY "║    PgUp     │  Next edit window up          │  Beginning of current window   ║"
  41.    @ 14,0 SAY "║    PgDn     │  Next edit window down        │  End of current window         ║"
  42.    @ 15,0 SAY "║     ESC     │  Abort edit without changes   │               -                ║"
  43.    @ 16,0 SAY "║     ^B      │                -              │  Reformat field in window      ║"
  44.    @ 17,0 SAY "║     ^T      │                -              │  Delete word right             ║"
  45.    @ 18,0 SAY "║     ^Y      │                -              │  Delete current line           ║"
  46.    @ 19,0 SAY "║     ^W      │                -              │  Finish edit and save changes  ║"
  47.    @ 20,0 SAY "╚═════════════╧═══════════════════════════════╧════════════════════════════════╝"
  48.    @ 21,0 SAY "Press any key to continue...                                                    "
  49.    t = INKEY(0)
  50.    SETCOLOR(oldcolor)
  51.    @ r,c SAY ""
  52.    RESTORE SCREEN FROM help_sc
  53.    RELE save_sel, save_rec, help_sc, t, oldcolor, r, c
  54.    RELE ntr, nbr, nlc, nrc, n_text, corner, edit_sc, mvex
  55.    RETURN
  56. ENDIF
  57. save_sel = ALIAS()
  58. save_rec = RECNO()
  59. DO N_select WITH "HELP"
  60. IF ALIAS() != "HELP"
  61.    SELE 0
  62.    IF NET_USE("HELP",.F.,5)
  63.       SET INDEX TO Help
  64.    ENDIF
  65.  
  66. ENDIF
  67. SEEK TRIM(UPPER(disp_name))+TRIM(UPPER(proc))+TRIM(UPPER(memvar))
  68. IF ! FOUND()
  69.    IF FIL_LOCK(3)
  70.       APPE BLAN
  71.       REPL Menu_nam WITH UPPER(disp_name)
  72.       REPL Proc_nam WITH UPPER(proc)
  73.       REPL Vari_nam WITH UPPER(memvar)
  74.       IF r >=17
  75.          REPL Htr WITH r-6
  76.          REPL Hbr WITH r-2
  77.       ELSE
  78.          REPL Htr WITH r+1
  79.          REPL Hbr WITH r+5
  80.       ENDIF
  81.       nlc = c - 9
  82.       nrc = c + 9
  83.       DO WHILE nlc < 1
  84.          nlc = nlc + 1
  85.          nrc = nrc + 1
  86.       ENDDO
  87.       DO WHILE nrc > 78
  88.          nlc = nlc - 1
  89.          nrc = nrc - 1
  90.       ENDDO
  91.       REPL Hlc WITH nlc
  92.       REPL Hrc WITH nrc
  93.       REPL Help_txt WITH " No Additional  "+chr(13)+chr(10)+;
  94.                        " Help Available "+chr(13)+chr(10)
  95.       UNLOCK
  96.    ELSE
  97.       SETCOLOR(oldcolor)
  98.       IF ! EMPTY(save_sel)
  99.          DO N_select WITH save_sel
  100.          GOTO save_rec
  101.       ENDIF
  102.       @ r,c SAY ""
  103.       RESTORE SCREEN FROM help_sc
  104.       RELE save_sel, save_rec, help_sc, t, oldcolor, r, c
  105.       RELE ntr, nbr, nlc, nrc, n_text, corner, edit_sc, mvex
  106.       RETURN
  107.    ENDIF
  108. ENDIF
  109. @ Htr, Hlc CLEAR to Hbr+1, Hrc
  110. @ Htr, Hlc, Hbr, Hrc BOX box_st
  111. memoedit(HELP_TXT,HTR+1,HLC+1,HBR-1,HRC-1,.F.,"helpnob")
  112. @ HBR+1, HLC+1 SAY "Press any key"+space(HRC-HLC-13)
  113. t = INKEY(0)
  114. IF t = -34   && <ALT><F5>
  115.    IF REC_LOCK(5)
  116.       ntr = HTR
  117.       nbr = HBR
  118.       nlc = HLC
  119.       nrc = HRC
  120.       n_text = HELP_TXT
  121.       mvex = .F.
  122.       RESTORE SCREEN FROM help_sc
  123.       @ 23,0 CLEAR TO 24,79
  124.       msg = "Edit(E), Quit(Q), Abort(ESC)"
  125.       @ 23,CENTR(msg,0) SAY msg
  126.       msg = "Select Corner(Home,End,PgUp,PgDn), Position(Arrows), Toggle Move/Expand(M)"
  127.       @ 24,CENTR(msg,0) SAY msg
  128.       SAVE SCREEN to edit_sc
  129.       corner = 1 && (1) Top Left (2) Top Right (3) Bottom Left (4) Bottom Right
  130.       DO WHILE .T.
  131.          RESTORE SCREEN FROM edit_sc
  132.          @ ntr, nlc CLEAR to nbr+1, nrc
  133.          @ ntr, nlc to nbr, nrc double
  134.          memoedit(n_text,ntr+1,nlc+1,nbr-1,nrc-1,.F.,"helpnob")
  135.          @ nbr+1, nlc+1 SAY "Press any key"+space(nrc-nlc-14)
  136.          DO CASE
  137.             CASE corner = 1
  138.                @ ntr,nlc SAY "*"
  139.             CASE corner = 2
  140.                @ ntr,nrc SAY "*"
  141.             CASE corner = 3
  142.                @ nbr,nlc SAY "*"
  143.             CASE corner = 4
  144.                @ nbr,nrc SAY "*"
  145.          ENDCASE
  146.          IF mvex
  147.             @ 0,70 SAY "<EXPAND>"
  148.          ENDIF
  149.          t = INKEY(0)
  150.          DO CASE
  151.             CASE (t = 27)               && (ESC) Abort
  152.                UNLOCK
  153.                EXIT
  154.             CASE (t = 113) .or. (t = 81)      && (Q or q) Quit
  155.                REPL Htr WITH ntr
  156.                REPL Hbr WITH nbr
  157.                REPL Hlc WITH nlc
  158.                REPL Hrc WITH nrc
  159.                REPL Help_txt WITH n_text
  160.                UNLOCK
  161.                EXIT
  162.             CASE (t = 1)               && Home
  163.                corner = 1
  164.             CASE (t = 18)               && PgUp
  165.                corner = 2
  166.             CASE (t = 6)               && End
  167.                corner = 3
  168.             CASE (t = 3)               && PgDn
  169.                corner = 4
  170.             CASE (t = 5)               && up arrow
  171.                IF mvex
  172.                   IF (corner = 1) .or. (corner = 2)
  173.                      ntr = ntr - 1
  174.                      IF ntr < 1
  175.                         ntr = 1
  176.                      ENDIF
  177.                   ELSE
  178.                      nbr = nbr - 1
  179.                      IF nbr < (ntr + 2)
  180.                         nbr = nbr + 1
  181.                      ENDIF
  182.                   ENDIF
  183.                ELSE
  184.                   ntr = ntr - 1
  185.                   nbr = nbr - 1
  186.                   IF ntr < 1
  187.                      ntr = 1
  188.                      nbr = nbr + 1
  189.                   ENDIF
  190.                ENDIF
  191.             CASE (t = 24)               && down arrow
  192.                IF mvex
  193.                   IF (corner = 1) .or. (corner = 2)
  194.                      ntr = ntr + 1
  195.                      IF ntr > (nbr - 2)
  196.                         ntr = ntr - 1
  197.                      ENDIF
  198.                   ELSE
  199.                      nbr = nbr + 1
  200.                      IF nbr > 23
  201.                         nbr = 23
  202.                      ENDIF
  203.                   ENDIF
  204.                ELSE
  205.                   ntr = ntr + 1
  206.                   nbr = nbr + 1
  207.                   IF nbr > 23
  208.                      nbr = 23
  209.                      ntr = ntr - 1
  210.                   ENDIF
  211.                ENDIF
  212.             CASE (t = 19)               && left arrow
  213.                IF mvex
  214.                   IF (corner = 1) .or. (corner = 3)
  215.                      nlc = nlc - 1
  216.                      IF nlc < 1
  217.                         nlc = 0
  218.                      ENDIF
  219.                   ELSE
  220.                      nrc = nrc  - 1
  221.                      IF nrc < (nlc + 14)
  222.                         nrc = nrc + 1
  223.                      ENDIF
  224.                   ENDIF
  225.                ELSE
  226.                   nlc = nlc - 1
  227.                   nrc = nrc - 1
  228.                   IF nlc < 1
  229.                      nlc = 0
  230.                      nrc = nrc + 1
  231.                   ENDIF
  232.                ENDIF
  233.             CASE (t = 4)               && right arrow
  234.                IF mvex
  235.                   IF (corner = 1) .or. (corner = 3)
  236.                      nlc = nlc + 1
  237.                      IF nlc > (nrc - 14)
  238.                         nlc = nlc - 1
  239.                      ENDIF
  240.                   ELSE
  241.                      nrc = nrc + 1
  242.                      IF nrc > 79
  243.                         nrc = 79
  244.                      ENDIF
  245.                   ENDIF
  246.                ELSE
  247.                   nlc = nlc + 1
  248.                   nrc = nrc + 1
  249.                   IF nrc > 79
  250.                      nrc = 79
  251.                      nlc = nlc - 1
  252.                   ENDIF
  253.                ENDIF
  254.             CASE (t = 101) .or. (t = 69)   && (E or e) Edit
  255.                n_text = memoedit(n_text,ntr+1,nlc+1,nbr-1,nrc-1,.T.)
  256.             CASE (t = 109) .or. (t = 77)   && (M or m) Toggle Move/Expand
  257.                IF mvex
  258.                   mvex = .F.
  259.                ELSE
  260.                   mvex = .T.
  261.                ENDIF
  262.          ENDCASE
  263.       ENDDO
  264.    ELSE
  265.       @ 24,0 CLEAR TO 24,79
  266.       msg = "Record is in Use, Press any Key to Continue..."
  267.       @ 24,CENTR(msg,0) SAY msg
  268.       INKEY(0)
  269.    ENDIF
  270. ENDIF
  271. SETCOLOR(oldcolor)
  272. IF ! empty(save_sel)
  273.    DO N_select WITH save_sel
  274.    GOTO save_rec
  275. ENDIF
  276. @ r,c SAY ""
  277. RESTORE SCREEN FROM help_sc
  278. RELE save_sel, save_rec, help_sc, t, oldcolor, r, c, nlc, nrc
  279. RELE ntr, nbr, nlc, nrc, n_text, corner, edit_sc, mvex
  280. RETURN
  281.  
  282. FUNC Helpnob
  283. PARA mode,line,colu
  284. *
  285. IF mode = 3
  286.    KEYBOARD CHR(23)
  287. ENDIF
  288. RETURN 0
  289.