Release 10.1A: OpenEdge Development:
Progress 4GL Reference

> ## Direct manipulation events

> Direct manipulation events are Progress events that directly modify the size, shape, position, and appearance of a widget. These events are generated by mouse actions. Each user interface widget either has direct manipulation enabled or does not. Some types of widgets, such as menus, cannot have direct manipulation enabled. You can enable widgets for direct manipulation by setting the SELECTABLE, MOVABLE, or RESIZABLE attribute to TRUE.

> If a widget has direct manipulation enabled, then direct manipulation events take priority over all other events. In other words, while data manipulation is enabled, the widget cannot perform data entry or application control functions. For example, if you set SELECTABLE to TRUE for a button, Progress interprets a MOUSE-SELECT-UP event as a SELECTION event. If you set SELECTABLE to FALSE, Progress interprets the same event as a CHOOSE event.

> Direct manipulation events can be broken down into two types: general and frame-only. General direct manipulation events apply to both field-level and frame widgets. Frame-only direct manipulation events apply only to frames.

> The following sections list the Progress events associated with direct widget manipulation. The user actions listed for these events assume that you set the appropriate attributes to make each event possible. For example, a widget must be SELECTABLE to receive the SELECTION event. For more information on direct manipulation, see the chapter on direct manipulation in OpenEdge Development: Progress 4GL Handbook .

> ##### General direct manipulation events

> Table 99 lists the direct manipulation events that apply to field-level widgets and frames:

> Table 99: General direct manipulation events
> Event | User action | Affected widgets | Progress action
> --- | --- | --- | ---
>     DESELECTION
> | For all selected widgets in a frame — Click the mouse SELECT button on an unselected widget or in empty space in the frame. For a single selected widget — Click the mouse EXTEND button on a selected widget. | Frame and field-level widgets with SELECTABLE attribute set to TRUE; browses. | Internal: Sets the widget’s SELECTED attribute to FALSE. This setting takes effect after any trigger for the event executes. Screen: Removes the highlight from the affected widget or widgets.
>     END-MOVE
> | Release the pressed mouse MOVE button after moving the drag box for the widget or widgets. | Frame and field-level widgets with MOVABLE attribute set to TRUE; Also browse-columns. | Internal: Generates an END-MOVE event for each moved widget. Screen: Moves each widget to the new x and y coordinates of its drag box.
>     END-RESIZE
> | Release the pressed mouse SELECT button after stretching the resize box to resize the widget. | Frame and field-level widgets with RESIZABLE and SELECTABLE attributes set to TRUE; Also browse-columns. | Internal: Generates an END-RESIZE event for the resized widget. Screen: Resizes the widget to the new x and y coordinates of its resize box.
>     END-ROW-RESIZE
> | Release the pressed mouse SELECT button after resizing a row. | Browses. | Internal: Generates an END-ROW-RESIZE event for the resized row. Screen: Resizes all rows to the new height.
>     SELECTION
> | For a single unselected widget—Click the mouse SELECT or EXTEND button on the widget. For multiple unselected widgets—Release the pressed EXTEND button after drawing a select box around the widgets. | Frame and field-level widgets with SELECTABLE attribute set to TRUE. | Internal: Sets each widget’s SELECTED attribute to TRUE. This setting takes effect after any trigger for the event executes. Screen: Highlights the affected widget or widgets.
>     START-MOVE
> | For a single widget—With the mouse pointer on the widget, press and hold the mouse MOVE button, and begin moving the mouse pointer. For multiple selected widgets—With the mouse pointer on any one of the selected widgets, press and hold the mouse MOVE button, and begin moving the mouse pointer. | Frame and field-level widgets with MOVABLE attribute set to TRUE; for multiple widgets, SELECTABLE attribute also set to TRUE; Also browse-columns. | Internal: Sends a START-MOVE event to all selected widgets. If the trigger returns a NO-APPLY, Progress does not generate the subsequent END-MOVE event. Screen: Draws a drag box around each of the one or more affected widgets, and moves each drag box in the direction of the moving mouse pointer.
>     START-RESIZE
> | With the mouse pointer on a resize handle of a selected widget, press and hold the mouse SELECT button and begin moving the mouse pointer. | Frame and field-level widgets with RESIZABLE and SELECTABLE attributes set to TRUE; Browse-columns. | Internal: Sends a START-RESIZE event to the selected widget. If the trigger returns NO-APPLY, Progress does not generate the subsequent END-RESIZE event. Screen: Stretches a resize box around the widget in the direction of the moving mouse pointer.
>     START-ROW-RESIZE
> | With the mouse pointer on a row, press and hold the mouse SELECT button and begin moving the mouse pointer. | Browses | Internal: Sends a START-ROW-RESIZE event to the browse. If the trigger returns NO-APPLY, Progress does not generate the subsequent END-ROW-RESIZE event. Screen: Stretches a resize box around the row in the direction of the moving mouse pointer.

> ##### Frame-only direct manipulation events

> Table 100 lists the direct manipulation events that apply only to frames.

> Table 100: Frame-only direct manipulation events
> Event | User action | Affected widgets | Progress action
> --- | --- | --- | ---
>     EMPTY-SELECTION
> | Click the mouse SELECT button on an empty space in the frame. | Frame and dialog box, whether its SELECTABLE attribute is set to TRUE or FALSE. | Internal: Sends a DESELECTION event to all selected widgets in the frame and sends the EMPTY-SELECTION event to the frame. Screen: Removes the highlight around any selected widgets in the frame.
>     END-BOX-SELECTION
> | Release the pressed mouse SELECT or EXTEND button after moving the mouse pointer to stretch the select box. | Frame and dialog box with BOX-SELECTABLE attribute set to TRUE. | Internal: If the user pressed the mouse SELECT button, Progress sends a SELECTION event to all widgets surrounded by the select box. If the user pressed a mouse EXTEND button, Progress sends a SELECTION event to all unselected widgets, and a DESELECTION event to all selected widgets surrounded by the select box. If a trigger on END-BOX-SELECTION returns NO-APPLY, Progress does not send a subsequent SELECTION or DESELECTION event. Note that this behavior differs from the behavior of END-MOVE and END-RESIZE. Screen: Erases the select box, highlights selected widgets, and removes the highlight from deselected widgets.
>     START-BOX-SELECTION
> | Press and hold the mouse SELECT or EXTEND button in an empty area of the frame and begin moving the mouse pointer. | Frame and dialog box with BOX-SELECTABLE attribute set to TRUE. | Internal: Sends a START-BOX-SELECTION event to the frame. If a trigger returns NO-APPLY, Progress does not generate the subsequent END-BOX-SELECTION event. Screen: Draws a select box, which initially appears as a dot.

Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095