窗口的control []数组中的项目顺序

时间:2018-11-20 20:46:28

标签: powerbuilder

在窗口中有一个control []数组,其中的控件在窗口中。 有人知道那个control []数组中控件顺序的算法是什么吗? 有时候,这种顺序在开发模式下会更改,我不为什么。我对此有很大的疑问

请帮助

1 个答案:

答案 0 :(得分:0)

在内部创建和销毁事件中,在创建和销毁控件时,将维护powerbuilder可视对象容器(用户对象,窗口等)中的控件数组。这些通常是按照将控件放在容器上的顺序进行的。因此,例如,如果我们查看名为“ w_my_window”的窗口的源代码(右键单击系统树中的对象,然后选择“编辑源代码”,或导出到src文件),在其中创建了两个命令按钮和一个数据窗口:

on w_my_window.create
int iCurrent
call super::create
this.cb_1=create cb_1
this.cb_2=create cb_2
this.dw_1=create dw_1
iCurrent=UpperBound(this.Control)
this.Control[iCurrent+1]=this.cb_1
this.Control[iCurrent+2]=this.cb_2
this.Control[iCurrent+3]=this.dw_1
end on

on w_my_window.destroy
call super::destroy
destroy(this.cb_1)
destroy(this.cb_2)
destroy(this.dw_1)
end on

请注意,如果您以这种方式进行编码(例如,使用Create / OpenUserObject动态创建控件),则可以在其他事件和函数中的其他时间创建和销毁控件,并且这样做也会影响控件数组。

还要注意,控制数组是建立在祖先发生的事情上的,后代将继续在此控制数组上建立。

为清楚起见,这都不适用于数据窗口中的对象。