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.
Controls
Window objects
Syntax
1 |
<span>OpenWithParm</span> ( <span>windowvar</span>, <span>parameter</span>, <span>windowtype</span> {, <span>parent</span> } ) |
Argument |
Description |
---|---|
windowvar |
A window variable, usually of datatype |
parameter |
The parameter you want to store in the
|
windowtype |
A string whose value is the datatype |
parent |
The window you want to make the parent |
Return Values
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 |
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.
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.
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 |
window w_to_open |
1 |
string s_w_name, e_location |
1 |
1 |
e_location = sle_location.Text |
1 |
1 |
SELECT next_window INTO :s_w_name |
1 |
FROM routing_table |
1 |
WHERE ... ; |
1 |
1 |
<span>OpenWithParm</span>(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 |
window wc_to_open |
1 |
string c_w_name |
1 |
integer age = 60 |
1 |
1 |
c_w_name = "w_c_emp1" |
1 |
1 |
<span>OpenWithParm</span>(wc_to_open, age, c_w_name, w_emp) |