Syntax 2: For user objects of unknown datatype
Description
Opens a user object when the datatype of the user object is not
known until the script is executed. In addition,
OpenUserObjectWithParm stores a parameter in the system’s Message object
so that it is accessible to the opened object.
Applies to
Window objects and user objects
Syntax
|
1 |
objectname.OpenUserObjectWithParm ( targetobjectvar, parameter, targetobjecttype {, x, y } ) |
|
Argument |
Description |
|---|---|
|
objectname |
The name of the window or user object in which to |
|
targetobjectvar |
A variable of datatype DragObject. |
|
parameter |
The parameter you want to store in the Message
|
|
targetobjecttype |
A string whose value is the datatype of the target |
|
x (optional) |
The x coordinate in PowerBuilder units of the user |
|
y (optional) |
The y coordinate in PowerBuilder units of the |
Return value
Integer. Returns 1 if it succeeds and -1 if an error occurs. If
any argument’s value is null, OpenUserObjectWithParm returns
null.
Usage
The system Message object has three properties for storing data.
Depending on the datatype of the parameter specified for
OpenUserObjectWithParm, scripts for the opened user object 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 target user object, consider accessing 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 an object that is
being closed, that control will not exist when a script accesses the
parameter.
See also the usage notes for OpenUserObject, all of which apply
to OpenUserObjectWithParm.
Examples
The following statement displays an instance of a user object
u_data of type u_benefit_plan at location 20,100 in the container object
w_hresource. The parameter “Benefits” is stored in
message.StringParm:
|
1 2 3 |
DragObject u_data w_hresource.OpenUserObjectWithParm(u_data, & "Benefits", "u_benefit_plan", 20, 100) |
These statements open a user object of the type specified in the
string s_u_name and store the reference to the object in the variable
u_to_open. The script gets the value of s_u_name, the type of user
object to open, from the database. The parameter is the text of the
SingleLineEdit sle_loc, so it is stored in Message.StringParm. The
target object is at the default coordinates 0,0 in the objectname object
w_info:
|
1 2 3 4 5 6 7 8 9 10 11 |
DragObject u_to_open string s_u_name, e_location e_location = sle_location.Text SELECT next_userobj INTO : s_u_name FROM routing_table WHERE ... ; w_info.OpenUserObjectWithParm(u_to_open, & e_location, s_u_name) |
The following statements display a user object of the type
specified in the string s_u_name and store the reference to the object
in the variable u_to_open. The parameter is numeric, so it is stored in
message.DoubleParm. The target object is at the coordinates 100,200 in
the objectname object w_emp:
|
1 2 3 4 5 6 7 |
userobject u_to_open integer age = 60 string s_u_name s_u_name = sle_user.Text w_emp.OpenUserObjectWithParm(u_to_open, age, & s_u_name, 100, 200) |
See also