compile insert Msg_Equates
* used by Msg()
******************************************************************************
*
* Product    :  OpenInsight
* Version    :  3.5
*
* History    :  (date, initials, notes)
*   12/15/95  apk  Original programmer.
*   02/26/96  cp   Changed OK return value to "" from 0 (backwards compat.)
*   03/28/96  cp   Added MHELP$, MREQRESP$, and MBEEP$ fields
*                  Commented message structure and instructions
*   06/24/97  cp   Added G (gauge) type, removed unused equates
******************************************************************************
declare subroutine Msg          ;* Msg(Parent, MsgDef [, MsgKey, Instruction, Params])
declare function   Msg          ;* Ans = Msg(Parent, MsgDef [, MsgKey, Instruction, Params])
* message structure field definitions
equ MTEXT$          to 1        ;* the text to display in the message, multiple lines delimited by @tm, cr/lf, or "|"
equ MTYPE$          to 2        ;* the message type, defaults to "BO" (see below)
equ MMODAL$         to 3        ;* modality of message, defaults to "A" (see below)
equ MICON$          to 4        ;* icon to display (see below)
equ MDEFBTN$        to 5        ;* default button (1 for first, 2 for second, etc.)
equ MCOL$           to 6        ;* message h-pos in pixels, or -2 (center screen, the default), -1 (center parent)
equ MROW$           to 7        ;* message v-pos in pixels
equ MJUST$          to 8        ;* justification:  T (text, the default), L (left), R (right), C (center)
equ MBKCOLOR$       to 9        ;* background color (RGB value, @vm-delimited), see Utility("CHOOSECOLOR")
equ MFGCOLOR$       to 10       ;* foreground color (RGB value, @vm-delimited), see Utility("CHOOSECOLOR")
equ MTEXTWIDTH$     to 11       ;* the message width (or the response field width for response messages)
equ MCAPTION$       to 12       ;* the message title
equ MVALID$         to 13       ;* for response messages, this is the validation pattern (ie. (MD0) for integer)
equ MDEFINPUT$      to 14       ;* for reponse messages, this is the default response
equ MMASKINPUT$     to 15       ;* boolean, true for password (masked) input, false (default) for readable input
equ MBITMAP$        to 16       ;* name of a bitmap registered in repository (as it appears in the outliner)
equ MCLIPBMP$       to 17       ;* boolean, true to clip bitmaps, false to resize (see IMAGECLIP property)
equ MFONT$          to 18       ;* font structure for the text of the message
equ MLITERAL$       to 19       ;* boolean, defaults to false, true specifies that default value is a function (see below)
equ MHELP$          to 20       ;* help button, Type:@vm:Specifier:@vm:Text (see below), defaults to null (no help)
equ MREQRESP$       to 21       ;* boolean, for type "R" messages, false allows nulls (default) while true doesn't
equ MBEEP$          to 22       ;* integer, specifies beep (see MessageBeep in the Windows API)
equ MEXTENT$        to 23       ;* integer, specifies extent of the gauge (number of items to process for type="G")
equ MNUMFIELDS$     to 23
* MTYPE$ details:
*
* there are six base types, B (buttons), R (response), U (up), and D (down),
* T (timed), and G (gauge)
*
* the button type has several pre-defined button sets which are localized
* using entries from the SYSTEM_RESOURCES record in the SYSENV table; for
* non-standard labels, the buttons can be specified in a comma-delimited
* list, like "B&One,&Two,&Three" (where the & specifies the accelerator)
*
*   B Type  Description
*   ------  --------------------
*   BO      OK
*   BOC     OK/Cancel
*   BNY     Yes/No
*   BNYC    Yes/No/Cancel
*   BRC     Retry/Cancel
*   BAR     Abort/Retry
*   BARI    Abort/Retry/Ignore
*   B{list} User-defined buttons
*
* the response type displays an edit field and OK and Cancel buttons;
* the optional sub-types are C (upper-case only) and E (escape or
* cancel button returns escape character instead of default response);
* for example, the following types are valid:  "R", "RC", "RE", "RCE"
*
* for B and R types, the type can be preceded with an N to specify that
* the default value for the message is to be returned without the message
* being displayed; this is one way to change messages from interactive
* to non-interactive for batch processes; for example, instead of "BARI",
* pass "NBARI" (meaning don't display the abort/retry/ignore message)
*
* to display a message while processing, use the "U" type:
*
*   Def = ""
*   Def<MTEXT$> = "Processing..."
*   Def<MTYPE$> = "U"
*   MsgUp = Msg(@window, Def)   ;* display the processing message
*   ...
*   Msg(@window, MsgUp)         ;* take down the processing message
*
* to display a message for a specific length of time, use the "T" type:
*
*   Def = ""
*   Def<MTEXT$> = "Waiting..."
*   Def<MTYPE$> = "T2"          ;* 2-second message
*   Msg(@window, Def)
*
* the optional sub-type for T type is A (asynchronous), which displays
* the message and returns (allowing processing to continue) and takes
* the message down after the specified period of time; since this relies
* on a timer event, your event code must either complete within the
* specified period of time or you must regularly use Yield() to allow
* the processing of posted events (like the timer):
*
*   Def = ""
*   Def<MTYPE$> = "TA5"         ;* 5-second splash-screen
*   Msg(@window, Def, "SPLASHSCREEN")
*   loop
*     Done = AppLogonProcessing()
*     Yield()
*   until Done
*   repeat
*
* to display a gauge (percent bar), use the "G" type; sub-types are C (show
* cancel button) and Y (yield on each cycle):
*
*   Def = ""
*   Def<MCAPTION$> = "Processing Orders..."
*   Def<MTYPE$   > = "GC"
*   Def<MEXTENT$ > = OrderCnt
*   MsgUp = Msg(@window, Def)
*   for Order = 1 to OrderCnt
*     gosub ProcessOrder
*   * update the gauge and check if cancel was pressed
*   while Msg(@window, MsgUp, Order, MSGINSTUPDATE$)
*   next Order
*   Msg(@window, MsgUp)         ;* take down the gauge
* MMODAL$ detail:
*
*   Code         Modality     Description
*   -----------  -----------  -----------------------------
*   W            Window       only the parent is disabled
*   A (default)  Application  all OI windows are disabled
*   S            System       all applications are disabled
* MICON$ detail:
*
*   Code  Icon
*   ----  ---------------
*   null  None
*   *     Asterisk (Info)
*   ?     Question
*   !     Exclaim (Warning)
*   H     Halt (Stop sign)
*   B     User-specified bitmap (specified in MBITMAP$ field)
* MLITERAL$ details (applies only to response type messages):
*
* if MLITERAL$ is true, the Msg() function assumes that the default value is
* the name of a function which returns the default value for the message;
* for example, if you wrote a function called CURRENTUSER which returned
* the user name of the current user, you could specify CURRENTUSER as the
* default value (MDEFINPUT$) and set MLITERAL$ to true, so that the current
* user name would be the default value for the message; parameters are
* passed to the specified function depending on the number of parameters
* that are supported by the function:
*
*   # Params   Values Passed
*   ---------  --------------
*   0          None
*   1          MsgKey
*   2 or more  MsgKey, MsgDef
* MHELP$ details:
*
*   Type  Description          Specifier
*   ----  -------------        -----------------
*   Q     QuickHelp (AppNote)  Name of AppNote
*   M     Message              Name of Message
*   H     WinHelp              HelpFile,HelpID
*   S     Stored Procedure     ProcName[,Param1]
*
*   Note:  Specify the AppNote, Message, HelpFile, or ProcName as it appears
*          in the repository outliner.  For example, the OINSIGHT.HLP file is
*          registered as OINSIGHT, so specify the HelpFile as "OINSIGHT" (look
*          in the outline under "General", "Windows Components", "Help Files")
*
*   Text defaults to "&Help" or a localized equivalent
* Replaceable message parameters:
*
*   Msg(@window, "Hello, %1%, how are you %2%?", "", "", @username: @fm: "today")
* Msg() function instruction values
equ MSGINSTSTART$   to 1         ;* (default instruction)
equ MSGINSTREAD$    to 2         ;* bErr = Msg("", MsgDef, MsgID, MSGINSTREAD$)
equ MSGINSTWRITE$   to 3         ;* bErr = Msg("", MsgDef, MsgID, MSGINSTWRITE$)
equ MSGINSTLOCK$    to 4         ;* bErr = Msg("", "", MsgID, MSGINSTLOCK$)
equ MSGINSTUNLOCK$  to 5         ;* bErr = Msg("", "", MsgID, MSGINSTUNLOCK$)
equ MSGINSTBUTTON$  to 6         ;* reserved
equ MSGINSTCREATE$  to 7         ;* reserved
equ MSGINSTRESPCHG$ to 8         ;* reserved
equ MSGINSTCLOSE$   to 9         ;* reserved
equ MSGINSTTIMER$   to 10        ;* reserved
equ MSGINSTHELP$    to 11        ;* reserved
equ MSGINSTUPDATE$  to 12        ;* (see above)
* Msg() function return values from MSGINSTSTART$
equ RET_OK$         to ""
equ RET_CANCEL$     to \1B\    ;* escape character
equ RET_YES$        to 1
equ RET_NO$         to 0
equ RET_ABORT$      to 1
equ RET_RETRY$      to 2
equ RET_IGNORE$     to 3
* misc strings
equ MSGTYPE$        to "MSG"
equ MSGCLASS$       to ""
  • No labels