您的位置:首页 > 职场人生

foxpro8.0新增加功能(1) 续

2009-11-06 08:32 169 查看
注意:
不能传递参数到新创建成员的 Init 事件, 因为成员是在父容器的 Count 属性改变时动态创建的,如果需要传递参数, 可以用容器的 AddObject 方法。

修改上篇的代码,实现为新增页对象传递参数的功能:

主程序

PUBLIC x
x = CREATEOBJECT("form")
x.ADDOBJECT("pf1","myPageFrame","myclass")//字符串"myclass"
是要传递的参数
x.pf1.Visible = .T.
x.Show()
DEFINE CLASS myPageFrame AS PageFrame
MemberClassLibrary = 'myPages.PRG'
MemberClass = 'myPage'
PageCount = 2
TabOrientation = 1
PROCEDURE init
PARAMETERS x //用于接收参数
this.Tag=x //参数存放在容器对象的tag属性中,由子对象取走
* TabOrientation = 0 page的tab在上
* TabOrientation = 1 page的tab在下
* TabOrientation = 2 page的tab在左
* TabOrientation = 3 page的tab在右
ENDDEFINE

类库:
mypages.prg

DEFINE CLASS myPage AS Page
ADD OBJECT cmd1 AS commandbutton WITH ;
Caption = "Hello", FontBold = .T.
PROCEDURE Init
THIS.Caption = "Funpage"+TRANSFORM(THIS.Parent.PageCount)+this.Parent.tag //在新增页的init事件处理代码中取出父容器的tag值。

ENDPROC
PROCEDURE cmd1.Click
MESSAGEBOX(this.Caption)
THIS.Parent.Parent.PageCount = THIS.Parent.Parent.PageCount+1
ENDPROC
ENDDEFINE

这种方法实现了参数传递,但不一定是最好的方法。如果要传递多个参数,最好为父容器新增相应个数的属性,以保存这些参数。
以上代码运行效果如图:

附件:http://down.51cto.com/data/2354462
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲 vfp