如何在Powerbuilder中创建用户对象数组?

时间:2010-03-25 01:06:25

标签: powerbuilder

我正在尝试将曾经嵌入在窗口中的VISUAL USER OBJECT转换为另一个窗口(同一个包)中的动态创建的可视用户对象。

我遇到的问题是,我似乎无法创建这些对象的数组,而无需获取空引用或反复重复使用相同的对象。

目前,当用户需要新的数组元素时:

long ll_count
ll_count = UpperBound(iuo_backorders[])
iuo_backorders[ll_count+1] = uo_backorder    
lb_ok = iuo_backorders[ll_count+1].init('w_backorder_popup', '', '', '', 'd_backorder_popup', sqlca, useTransObj()) 

这一次又重复使用相同的uo_backorder。

使用:iuo_backorders[ll_count+1] = create uo_backorder返回空对象引用。

用户对象包含在另一个窗口中(我想),所以我不确定是否需要将uo_命令移到PBL中自己的文件中,或以某种方式更改引用(新窗口是小孩原来的,但不确定如何与uo _)

相关

所有功能已经在uo_中,我只需要能够解决

A)如何动态创建可视用户对象

B)如何创建这些对象的数组。

2 个答案:

答案 0 :(得分:1)

要实例化可视对象,您需要:

windowname.OpenUserObject ( userobjectvar {, x, y } )

windowname.OpenUserObject ( userobjectvar, userobjecttype {, x, y } )

我希望您能够将iuo_backorders [ll_count + 1]用于您的userobjectvar,但如果没有,只需使用一个单一的用户对象变量,并在实例化后将其分配给数组元素。

祝你好运,

特里。

答案 1 :(得分:0)

PowerBuilder正试图告诉你,你正在使用错误的方法。通过OpenUserObject在运行时创建可视控件时,必须管理为每个控件提供x,y坐标的布局。此外,如果您需要多个相同的控件,则必须使用Terry发布的第二种OpenUserObject形式。如果你想制作类似于向导的东西并堆叠用户对象,这是很好的,但是在代码中布置对象时,迪斯科就出来了。在PowerBuilder中,只要您想要显示多个内容,尤其是可变数量的内容,就应该使用DataWindow控件。在您的情况下,您需要将uo_backorder中的功能移动到非可视对象,并在DataWindow中显示数据。如果所有数据(状态)都在DataWindow的行中,则只需要一个nvo用于所有行。