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

注意:
不能传递参数到新创建成员的 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
 
这种方法实现了参数传递,但不一定是最好的方法。如果要传递多个参数,最好为父容器新增相应个数的属性,以保存这些参数。
以上代码运行效果如图:
 

你可能感兴趣的:(职场,休闲,vfp)