home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 99.img / PDOX3-09.ZIP / TOOLKIT2 / EDITMENU.SC < prev    next >
Text File  |  1989-09-15  |  5KB  |  82 lines

  1. ; Copyright (c) 1987-1989 Borland International.  All Rights Reserved.
  2. ;
  3. ; General permission to re-distribute all or part of this script is granted,
  4. ; provided that this statement, including the above copyright notice, is not
  5. ; removed.  You may add your own copyright notice to secure copyright
  6. ; protection for new matter that you add to this script, but Borland
  7. ; International will not support, nor assume any legal responsibility for,
  8. ; material added or changes made to this script.
  9. ;
  10. ; Revs.:  MJP 5/14/87, DCY 12/13/88
  11. ; ****************************************************************************
  12. ; Although presenting a highly-simplified version of an editing session menu,
  13. ; EditMenu demonstrates how to incorporate a Paradox-style menu into a DoWait
  14. ; application.  More specifically, it shows how to reassign and reject keys in
  15. ; using TKChar and TKAccept, respectively.
  16. ;
  17. Proc EditMenu()
  18. ;  Private;Choice  ;Menu item selected
  19.  
  20.    Echo Off  ;ShowMenu raises canvas--first freeze current workspace on canvas
  21.    While True
  22.       ShowMenu
  23.          "Undo"   : "Undo the last change.",
  24.          "Help"   : "Help with data entry.",
  25.          "DO-IT!" : "Complete data entry, save changes to table.",
  26.          "Cancel" : "Stop data entry, cancel all changes."
  27.       To Choice
  28.       ; NOTE:  TKChar is (assuming EditMenu was invoked by a Special key
  29.       ;        procedure assigned to the [F10] key) -68 (Menu) at this point
  30.       ;        and will be passed to and acted upon by Paradox (displaying
  31.       ;        the standard Paradox menu) unless we reset TKChar to some
  32.       ;        other value or set TKAccept to False.  As in all but arrival
  33.       ;        procedures, resetting TKChar to a different value instructs
  34.       ;        DoWait to act upon the new value (remember?).
  35.       Switch
  36.          Case Choice = "Undo" :
  37.             TKChar =  21        ;Tell DoWait to loop around and press [Undo]
  38.          Case Choice = "Help" :
  39.             TKChar = -59        ;Tell DoWait to loop around and press [Help]
  40.          Case Choice = "DO-IT!" :
  41.             TKChar = -60        ;Tell DoWait to loop around and press [DO-IT!]
  42.          Case Choice = "Cancel" :
  43.             ShowMenu
  44.                "No"  : "Do not stop, resume data entry.",
  45.                "Yes" : "Go ahead and cancel data entry, discard all changes."
  46.             To Choice
  47.             Switch
  48.                Case Choice = "No" :  ;Menu/Cancel/No- Nothing should happen.
  49.                   TKAccept = False   ; Specify not to accept the current key
  50.                                      ; in TKChar ([Menu]).
  51.                Case Choice = "Yes" : ;Menu/Cancel/Yes- Cancel the editing
  52.                   TKChar = 0         ; session.  Since [Ctrl][Break] is
  53.                                      ; (presumably) assigned as an "Exit"
  54.                                      ; key, this will exit DoWait.
  55.                ; NOTE: Setting TKChar to 0 will activate field, record, and
  56.                ;       table departure events (if assigned) before actually
  57.                ;       exiting DoWait.  Setting TKKeyType = "X" would cause
  58.                ;       immediate exit from DoWait.
  59.                Otherwise :           ;Menu/Cancel/Esc-
  60.                   Loop               ; Re-display the previous (edit) menu
  61.             Endswitch
  62.          Otherwise:
  63.             TKAccept = False ;Esc pressed from menu-  Instruct DoWait to
  64.                              ; not to pass the key on to Paradox
  65.       Endswitch
  66.       Quitloop
  67.       ; NOTE:  The interaction between TKAccept and TKChar is subtle but
  68.       ;        important.  Setting TKAccept to False instructs DoWait not
  69.       ;        to allow Paradox to act upon the key.  Reassigning TKChar
  70.       ;        to a different key (value) instructs DoWait to act as if a
  71.       ;        user had actually pressed the new key.  Note, however, that
  72.       ;        setting TKAccept to False takes precedence over changing the
  73.       ;        value of TKChar, i.e., if you set TKAccept False, DoWait
  74.       ;        will ignore the value of TKChar even if you have changed it.
  75.       ;        In addition, changing the value of TKChar does not guarantee
  76.       ;        that Paradox will actually act upon the new key.  DoWait will
  77.       ;        reprocess the key exactly as if a user had actually typed it
  78.       ;        on the keyboard, meaning that it must pass through any event
  79.       ;        procedures it might activate before being passed on to Paradox.
  80.    Endwhile
  81. Endproc
  82.