Syntax 2: For windows of unknown datatype
Description
Opens a window object when you do not know its datatype until the
application is running. OpenWithParm displays the window and makes all
its properties and controls available to scripts. It also stores a
parameter in the system’s Message object.
Applies to
Window objects
Syntax
1 |
OpenWithParm ( windowvar, parameter, windowtype {, parent } ) |
Argument |
Description |
---|---|
windowvar |
A window variable, usually of datatype window. |
parameter |
The parameter you want to store in the Message
|
windowtype |
A string whose value is the datatype of the window |
parent (child and pop-up windows |
The window you want to make the parent of the child |
Return value
Integer. Returns 1 if it succeeds and -1 if an error occurs. If
any argument’s value is null, OpenWithParm returns null.
Usage
The system Message object has three properties for storing data.
Depending on the datatype of the parameter specified for OpenWithParm,
your scripts for the opened window would check one of the following
properties.
Message object property |
Argument datatype |
---|---|
Message.DoubleParm |
Numeric |
Message.PowerObjectParm |
PowerObject (PowerBuilder objects, including |
Message.StringParm |
String |
In the opened window, it is a good idea to access the value passed
in the Message object immediately because some other script may use the
Message object for another purpose.
Avoiding null object references
When you pass a PowerObject as a parameter, you are passing a
reference to the object. The object must exist when you refer to it
later or you will get a null object reference, which causes an error.
For example, if you pass the name of a control on a window that is
being closed, that control will not exist when a script accesses the
parameter.
Passing several values as a structure
To pass several values, create a user-defined structure to hold
the values and access the PowerObjectParm property of the Message
object in the opened window. The structure is passed by value, not by
reference, so you can access the information even if the original
structure has been destroyed.
See also the usage notes for Open, all of which apply to
OpenWithParm.
Examples
These statements open a window of the type specified in the string
s_w_name and store the reference to the window in the variable
w_to_open. The script gets the value of s_w_name, the type of window to
open, from the database. The parameter in e_location is text, so it is
stored in Message.StringParm:
1 2 3 4 5 6 7 8 9 10 |
window w_to_open string s_w_name, e_location e_location = sle_location.Text SELECT next_window INTO :s_w_name FROM routing_table WHERE ... ; OpenWithParm(w_to_open, e_location, s_w_name) |
The following statements open a window of the type specified in
the string c_w_name, store the reference to the window in the variable
wc_to_open, and make w_emp the parent window of wc_to_open. The
parameter is numeric, so it is stored in Message.DoubleParm:
1 2 3 4 5 6 7 |
window wc_to_open string c_w_name integer age = 60 c_w_name = "w_c_emp1" OpenWithParm(wc_to_open, age, c_w_name, w_emp) |
See also