回 帖 发 新 帖 刷新版面

主题:如何调整容器中对象的数组顺序

容器中对象的TAB顺序可以通过交互的方式改变,请问师傅们,容器中对象的数组顺序是否也可以通过交互的方式改变。例如,某容器中有TXT1、TXT2、TXT3三个对象,它们在数组中的顺序分别是1、2、3。是否可以通过交互的方式把TXT2调整为第一个对象,把TXT3调整为第二个对象,把TXT1调整为第三个对象呢?

回复列表 (共5个回复)

沙发

你是不是这样的意思:
把TEXT1的NAME属性变成TEXT2,把TEXT2的NAME属性变成TEXT3,把TEXT3的NAME属性变成TEXT1。

板凳

觉得楼主的这个问题应该不难解决,
象1楼所言,楼主有些没描述清楚。

3 楼

是调整位置,还是调整按TAB键的顺序?

4 楼

楼主的问题几乎无法解决,呵呵,原因是容器对象的Controls或者Objects属性都是只读的,并且这些对象数组包含的对象的顺序是在该容器中加入对象时的先后顺序。

不过,非要通过交互的方式更改,只有自定义一个类似的对象数组,比如MyControls,这样就能随时更改对象在该数组中的顺序。

比如:假设容器为cnt,依次加入3个文本框TXT1、TXT2、TXT3,则
cnt.Controls(1) 为TXT1
cnt.Controls(2) 为TXT2
cnt.Controls(3) 为TXT3

我们不管它的这个Controls(或者Objects)属性,自己加一个属性MyControls。

在cnt的Init事件中:

this.addproperty("MyControls(3)")
for i=1 to 3
   this.MyControls(i)=this.Controls(i)
endfor

现在,当需要改变顺序时,交换MyControls属性中任意两个元素的值就行。

瞧,其实我们避开了原本的Controls或者Objects属性,用自己的MyControls属性代替。

5 楼


谢谢四楼的老师,看来只有这个办法了!
容器中的对象我是按一定的顺序加入的,不知为什么,它们有时会自动变换前后位置,以致于我无法按我所要的顺序逐个访问容器中的对象。

我来回复

您尚未登录,请登录后再回复。点此登录或注册