This procedure creates a variety of widgets and a frame that acts as a message area. As you move around the widgets the procedure tells you what events ABL generates.
r-lstevt.p
DEFINE VARIABLE msg_watcher AS CHARACTER NO-UNDO FORMAT "x(50)".
DEFINE VARIABLE fi AS CHARACTER NO-UNDO FORMAT "x(50)"
LABEL "Fill-in".
DEFINE VARIABLE edit AS CHARACTER NO-UNDO
VIEW-AS EDITOR SIZE 10 BY 2.
DEFINE VARIABLE txt0 AS CHARACTER NO-UNDO FORMAT "x(75)".
DEFINE BUTTON exit LABEL "Go to Exit" AUTO-GO.
DEFINE BUTTON test LABEL "Test" SIZE 15 BY 3.
DISPLAY "Feel free to move around..." VIEW-AS TEXT SKIP
fi SKIP(0.1)
edit AT 2 SKIP(0.1)
test AT 10 exit AT 50 SKIP(0.5)
WITH FRAME f SIDE-LABELS.
DISPLAY txt0 LABEL "LAST-EVENT:LABEL FUNCTION (TYPE) > SELF:TYPE LABEL"
WITH FRAME report 4 DOWN CENTERED TITLE "Messages".
ON RETURN, TAB, ANY-PRINTABLE, GO ANYWHERE
RUN msgwatch. /* This procedure uses LAST-EVENT. */
ENABLE ALL WITH FRAME f.
WAIT-FOR GO OF FRAME f FOCUS fi.
DISPLAY txt0 WITH FRAME report.
DOWN WITH FRAME report.
END PROCEDURE.
Notes
For keyboard events, the CODE, FUNCTION, and LABEL attributes return the key code, key function, and key label of the event, respectively. For all other events the CODE attribute returns the numeric event code.
For mouse events, the FUNCTION attribute returns the names of portable mouse events and the LABEL attribute returns the names of three-button mouse events.
For high-level ABL events, the FUNCTION attribute returns the name of the event. If the ABL event is triggered by a key press, the LABEL attribute returns the key label. Otherwise, it returns the event name, as with the FUNCTION attribute.
The EVENT-TYPE attribute returns the category of the event: KEYPRESS, MOUSE, or ABL.
The ON-FRAME-BORDER attribute indicates whether a MOUSE event occurred in the border of a frame.
The TYPE attribute returns the widget type, PSEUDO-WIDGET.
The X and Y attributes return the pixel position of a MOUSE event relative to the current frame.
For browse widgets, WIDGET-ENTER and WIDGET-LEAVE are different depending on whether the browse is editable or read-only. For editable browse widgets, WIDGET-ENTER contains the handle of the column with focus. For read-only browse widgets, WIDGET-ENTER contains the handle of the browse. For editable brows widgets, WIDGET-LEAVE contains the handle of the column the user just left. For read-only browse widgets, WIDGET-LEAVE contains the handle of the field-level widget the user just left.