|hoModalDialog||Handle of modal dialog object|
Procedure OnCloseModalDialog Handle hoModalDialog
The OnCloseModalDialog event is the default event sent by a modal dialog (cWebModalDialog) to its invoking object when the modal dialog is closed.
You would implement an OnCloseModalDialog event handler inside the object that activates (invokes) a modal dialog, i.e. the object that sends the Popup message to a modal dialog. When the modal dialog is closed, it will send OnCloseModalDialog back to the invoking object. A handle to the modal dialog that was closed is passed as the hoModalDialog parameter.
By default, the modal dialog only sends OnCloseModalDialog if it was closed via the OK message (i.e. the Ok button was clicked or the [Enter] key was pressed by the user). If the modal dialog is closed via the Cancel message (i.e. the "X" or close button was clicked or the ESC key was pressed by the user), then OnCloseModalDialog is not sent by default.
To enable the OnCloseModalDialog event when the modal dialog is closed via the Cancel message. you must set the pbServerOnEscape property, of the modal dialog to True.
You can override the message that is sent when the dialog closes by setting the psReturnMessage property of the modal dialog. This means that the named message will be sent when the dialog closes, instead of OnCloseModalDialog.
You can override the target object that receives the OnCloseModalDialog event by setting the psReturnObject property of the modal dialog. This means that the named object will receive OnCloseModalDialog instead of the invoking object.
Object oWebCalculator is a cWebModalDialog Set piWidth to 300 Set piHeight to 125 Set pbResizable to False Set psCaption to "Web Calculator" Set piColumnCount to 2 Object oNum1 is a cWebForm Set peDataType to typeNumber Set piPrecision to 4 Set psLabel to "First Number" Set piColumnSpan to 0 End_Object Object oNum2 is a cWebForm Set peDataType to typeNumber Set piPrecision to 4 Set psLabel to "Second Number" Set piColumnSpan to 0 End_Object Object oOkButton is a cWebButton Set psCaption to C_$OK Set piColumnIndex to 0 Procedure OnClick Send Ok End_Procedure End_Object Object oCancelButton is a cWebButton Set psCaption to C_$Cancel Set piColumnIndex to 1 Procedure OnClick Send Cancel End_Procedure End_Object // used to initialize the dialog Procedure Popup WebSet psValue of oNum1 to 0 WebSet psValue of oNum2 to 0 Forward Send Popup End_Procedure Procedure OnSubmit Send Ok End_Procedure // After completion, call this from the invoking object // to get data from the dialog Procedure GetResultValues Number ByRef N1 Number ByRef N2 Number ByRef nTotal WebGet psValue of oNum1 to N1 WebGet psValue of oNum2 to N2 Move (N1 + N2) to nTotal End_Procedure End_Object
The above example demonstrates a simple calculator dialog that allows the input of two numbers and adds them together. Two web forms are used to enter the numbers and two buttons are used to close the dialog.
The dialog is activated by sending Popup. The oOkButton sends the OK message and the oCancelButton sends the Cancel message. Both messages will close the dialog, but the state of the pbCanceled property is set to True or False, accordingly.
When the dialog is closed via the OK message, then it will send OnCloseModalDialog to the object that invoked it (via Popup).
This dialog would be used from an invoking object in some other view in the following way:
Object oCalcButton is a cWebButton Set psCaption to "Calculate" Procedure OnClick Send Popup of oWebCalculator (Self) End_Procedure // standard callback method when modal dialog is invoked using Popup Procedure OnCloseModalDialog Handle hoModalDialog Number n1 n2 nTotal // assume that this function no longer returns bCanceled. Send GetResultValues of hoModalDialog (&n1) (&n2) (&nTotal) Send ShowInfoBox (String(n1) + "+" + String(n2) + "=" + String(nTotal)) "Calculation Complete" End_Procedure End_Object
The resulting addition is retrieved by calling GetResultValues.