hur.cn - 华软网

 热门搜索

请问一个关于定义对象变量的问题

  作者:未知    来源:网络    更新时间:2018/7/4
能不能定义一个对象,假设对象名为tabpage,将"tab_1.tabpage_1"中的值赋予它,然后调用tab_1.tabpage_1的属性的时候使用对象tabpage?
------华软网友回答------
好象不行
------华软网友回复------
tabpage这个不行,不过tabpage上面的控件可以,比如tabpage_1上面有个dw_1, 可以用:
datawindow ld_1
ld_1 = tab_1.tabpage_1.dw_1
------华软网友回复------
tabpage 在pb里是个保留字了, 不能随便使用的!
------华软网友回复------
可以做到,tabpage其实就是userobject。
tab ltab
ltab = tab_1
//这样就把tab_1赋值给了ltab
integer i,j
userobject luo
for i = 1 to upperbound(ltab.control)
    luo = ltab.control[i]  //这里将tabpage赋值给了luo
    for j = 1 to upperbound(luo.control)
        messagebox(string(i),string(j))
    next
next


------华软网友回复------
这个传值我明白,谢谢,但是只能访问luo的属性,不能用luo来引用该标签页上的控件
------华软网友回复------
要得到上面的控键还得再来一次
for i = 1 to upperbound(luo.control)
   .....
next
------华软网友回复------
我的意思是想这样调用,把tab_1.tabpage_1赋值给luo,假设这个标签页下有n个控件,如sle,dw等等,我想这样访问luo.sle.text="",luo.dw.reset(),可以吗?
------华软网友回复------
通过typeof判断对象类型,通过classname取得对象的名称。
将我前面的代码中的内循环改成下面这样:

statictext lst
singlelineedit lsle
datawindow ldw
for j = 1 to upperbound(luo.control)
Choose Case luo.control[j].TypeOf()
Case Tab!
//TAB控件
Case StaticText!
//静态文本
if luo.control[j].classname() = 'st_1' then
lst = luo.control[j] 
lst.text = '这是第一个静态文本'
elseif luo.control[j].classname() = 'st_2' then
lst = luo.control[j]
lst.text = '这是第二个静态文本'
end if
Case SingleLineEdit!
lsle = luo.control[j]
lsle.text = '这是个单行编辑框'
Case DataWindow!
ldw = luo.control[j]
ldw.reset() //数据窗口
End Choose
next

------华软网友回复------
To  zifenglingx(紫风铃) 
不行的,在PB中,tabpage是UserObject类型的,
而Userobject只是一种容器对象,只有一个control[]数组,
包含着其中的控件,但是不允许直接通过属性调用其内容      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。