请教TonyDeng :你 于 2011-7-14 23:29 编辑VFP自定义类中 父类、子类、参数联系?派生子類就必須這樣中有的代码不明白
下面是你在<2011年对VFP自定义类中 父类、子类、参数联系? 中 对派生子類就必須這樣:的代码>,有几个问题不清楚,请教一下VFP自定义类中 父类、子类、参数联系?
派生子類就必須這樣:
程序代码:
frm_Test = CREATEOBJECT("Form")
WITH frm_Test ??是不是在frm_test的对象中设置属性,但它的属性是再创建对象frm_test.container1
.AddObject("Container1", "SubContainer")
WITH .Container1 ?? .Container1前面的小黑点.表示何意义?
.Arrange ??在对象中可以设置自定义方法,及调用方法.
.A(5)
.Visible = .T.
ENDWITH
.AutoCenter = .T. ??这里的.AutoCenter前面的小黑点表示哪一个对象?是不是frm_Test对象?
.Show(1)
ENDWITH
RETURN
* 父類定義
DEFINE CLASS my_Container AS Container
ROWcount = 10
Indexid = 1
ADD OBJECT Label1 AS Label WITH Caption = "", Top = 5, Left = 5, Height = 25, AutoSize = .T.
ADD OBJECT Label2 AS Label WITH Caption = "", Top = 35, Left = 5, Height = 25, AutoSize = .T.
PROCEDURE Arrange
WITH This
.Top = 5
.Left = 5
.Height = ThisForm.Height - .Top - 5
.Width = ThisForm.Width - .Left - 5
ENDWITH
ENDPROC
PROCEDURE A
LPARAMETERS lnTree
IF (PCOUNT() < 1) .OR. (VARTYPE(lnTree) != "N")
lnTree = THIS.Indexid
ELSE
IF lnTree > THIS.ROWcount
lnTree = THIS.Indexid
ENDIF
ENDIF
This.Label1.Caption = "lnTree = " + STR(lnTree,3)
ENDPROC
PROCEDURE B(lnTree)
This.Label2.Caption = "父類中B方法執行的動作"
IF VARTYPE(lnTree) == "N"
This.A(lnTree)
ENDIF
ENDPROC
ENDDEFINE
* 派生類定義
DEFINE CLASS SubContainer AS my_Container
PROCEDURE A(lnTree)
This.Label2.Caption = "派生類中A方法執行的動作"
my_Container::A(lnTree) && 直接指定父類中需求執行的事件或方法,不限於本身A方法的父代碼
*DODEFAULT(lnTree) && 只能執行本身A方法的父代碼
ENDPROC ??上面二句代码运行后显示没有什么区别?有何作用?都是SubContainer 子类去调用它的父类my_Container(前面用粗体表示) ,并传递参数
ENDDEFINE
[ 本帖最后由 sylknb 于 2013-1-27 15:01 编辑 ]