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.