我正在尝试将曾经嵌入在窗口中的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)如何创建这些对象的数组。
答案 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用于所有行。