1

我正在尝试将曾经嵌入在窗口中的 VISUAL USER OBJECT 转换为在不同窗口(相同包)中动态创建的 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)然后如何创建这些对象的数组。

4

2 回答 2

1

要实例化一个视觉对象,您需要:

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

或者

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

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

祝你好运,

特里。

于 2010-03-25T03:18:05.607 回答
0

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

于 2010-03-25T14:25:58.287 回答