Try OpenEdge Now
skip to main content
ABL Reference
Handle Reference : SELF system handle
 

SELF system handle

A handle to the object or widget associated with the currently executing user-interface trigger or event procedure.

Syntax

SELF [ :attribute ]
attribute
An attribute of the object or widget associated with the trigger or event procedure.

Attributes

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.

Example

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.

Notes

*You can reference the SELF handle only within a user-interface trigger or the event procedure for an ActiveX control or asynchronous remote request.
*In user-interface triggers, SELF is not automatically the widget that has input focus. To give input focus to the widget referenced by SELF, you must apply the ENTRY event to SELF within the trigger block. Note that you must do this for fill-in widgets whose AUTO-ZAP attribute you want to set, as in this fragment:
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.
*In the event procedure of an asynchronous remote request or in the context of a procedure called directly or indirectly by this event procedure, SELF returns the associated asynchronous request handle.
*In the event procedure of an ActiveX control, SELF returns the control-frame handle and the COM-SELF system handle returns the control-frame COM-HANDLE value.
*If referenced within a READ-RESPONSE event procedure, then SELF is the socket handle associated with the connection that received the message. If referenced within the CONNECT event procedure, then SELF is the server socket handle.

See also

Asynchronous request object handle, COM-SELF system handle, FOCUS system handle, LAST-EVENT system handle