A handle to the object or widget associated with the currently executing user-interface trigger or event procedure.
The specific attributes available depend on the type of the object or widget. You can determine the object or widget type by examining the SELF:TYPE attribute.
The following example uses the SELF handle to display the starting and ending positions of an object you move:
r-self.p
DEFINE BUTTON b_quit LABEL "Quit" TRIGGERS: ON CHOOSE QUIT. END. DEFINE VARIABLE x AS CHARACTER NO-UNDO INITIAL "MOVE ME". DEFINE FRAME move x NO-LABEL WITH SIZE 80 BY 10 TITLE "Move/Resize Widget". ASSIGN x:MOVABLE = TRUE x:SELECTABLE = TRUE. DEFINE FRAME butt-frame b_quit WITH CENTERED ROW SCREEN-LINES - 1. ON END-MOVE OF x IN FRAME move DISPLAY SELF:FRAME-ROW SELF:FRAME-COL WITH FRAME end-info CENTERED ROW 14 TITLE "End Position". ON START-MOVE OF x IN FRAME move DISPLAY SELF:FRAME-ROW SELF:FRAME-COL WITH FRAME info CENTERED ROW 12 TITLE "Start Position". ENABLE b_quit WITH FRAME butt-frame. DISPLAY x WITH FRAME move. ENABLE x WITH FRAME move. WAIT-FOR CHOOSE OF b_quit IN FRAME butt-frame FOCUS x. |
DEFINE VARIABLE fname AS CHARACTER NO-UNDO FORMAT "x(30)" LABEL "Name". DEFINE FRAME FillFrame fname WITH SIDE-LABELS. ON ENTRY OF fname IN FRAME FillFrame DO: APPLY "ENTRY" TO SELF. SELF:AUTO-ZAP = TRUE. END. |
This makes SELF = FOCUS, which allows the new AUTO-ZAP value to take effect. For more information on the AUTO-ZAP attribute, see the Handle Attributes and Methods Reference.