Event Syntax

Syntax

! Name

! Name_*

! Name_Event

Arguments

Name

Character. Name is the name of the event that is placed into a_dlg_button when the Change event occurs.

Name_*

Character. Name_Event is placed into a_dlg_button when any type of ControlEvent occurs.

Name_Event

Character. Name_Event is placed into a_dlg_button when it occurs.

Description

The event syntax gives the programmer the opportunity to write Xbasic code in the %code% section of the Xdialog that analyzes the value of a_dlg_button and responds accordingly. Refer to Trapping the Change Event for more information about Xdialog events.

Events:

  • Change

    Character. The value of the control has changed.

  • Changing

    Character. The value of the control is changing.

  • Dblclick

    Character. The user double-clicks on the control.

  • Setfocus

    Character. The control receives focus.

  • Killfocus

    Character. The control loses focus.

Example

Note how the value of a_dlg_button is reset to NULL after being handled.

dim events[100] as C
dim a_colors[10] as C
colors = "Red,Green,Blue,Yellow,Orange,Pink"
colors = stritran(colors,",",crlf())
item_selected = "Shirt"
a_colors.initialize(colors)
a_colors.sort("ab")
ui_dlg_box("Pick a Color",<<%dlg%
Item: [.18item_selected^={Shirt,Tie,Pants,Jacket}!item_changed];
Double click on a color. |Event Name;
[.25,10color_selected^#a_colors!color_*] |[.25,10^#events];
{text=50,1:txt};
{lf};
<15Close!close> |<15Clear Events!clear>
%dlg%,<<%code%
events[events.first_empty()] = a_dlg_button
trace.writeln(a_dlg_button)
if a_dlg_button = "Clear"
    events.clear()
    a_dlg_button = ""
else if a_dlg_button = "Close" then
    'do nothing - the dialog will close
else
    a_dlg_button = ""
end if
%code%)

Responding to Selected Events

To generate other events add "_*" to the event parameter of the control. To respond to a selected event (e.g. killfocus), trap the base event name (e.g. ul_cell ), then test for the extended event name (e.g. ul_cell_killfocus ).

Upper left cell |[.10ul_cell!ul_cell_*];
...
if left(a_dlg_button,7) = "ul_cell" then
    if a_dlg_button = "ul_cell_killfocus" then
        ul_cell = upper(ul_cell)
        frow = regex_merge(ul_cell, "[A-Z]","")
        fcol = asc(regex_merge(ul_cell, "[0-9]",""))-64
    end if
    a_dlg_button = ""
end if

See Also