一般情况下,我们使用Custom派生自己的自定义类。
如果我们的自定义类里需要调用另一个自定义类的时候,我们是否可以将它作为这个类中的一个控件将它插入呢?
答案是否定的。
在向Custom中添加控件时,会得到提示,不能向不可视类里添加对象。
但是,如果我们的自定义不可视类(如myCustom)确实需要在其中再包含一个类时,怎么办?
直接的办法是,向类添加一个属性,并在Init事件里为这个属性赋值为相应的对象:
Procedure Init
This.CursorAdapter = CreateObject('myCursorAdapter')
...
EndProc
这样确实解决了问题,但还是不够好,因为我们在为类编写代码时,输入This.CursorAdapter.时,并没有下拉列表。我们只能凭记忆去使用它的方法与属性。
这个问题是可以解决的。
在为myCustom添加属性CursorAdapter后,我们在命令窗口里输入:
Public arSelObj[1],Selobj
Aselobj(arSelObj)
Selobj = arSelObj[1]
Selobj.CursorAdapter = CrecteObject('myCursorAdapter')
Release Selobj,arSelObj
运行这一段代码后,我们再回到myCustom的代码窗口,输入This.CursorAdapter.
这时,就可以看到关于myCursorAdapter的方法属性事件列表了。
这将有利于我们编写myCustom类的功能实现代码。
当然,在代码中,我们还是需要在适当的时候为CursorAdapter属性赋一个myCursorAdapter实例才行,以上方法仅是为编写代码提供了语法引导。
如果你不在意是否在属性编辑器里看到它,那么就更好办了,你可以使用命令直接向它添加对象,调用Addobject方法即可,这样就会添加一个对象而不是属性,但它不会出现在属性列表中。
这样添加的对象需要再用代码为它建立实例了。
Public arSelObj[1],Selobj
Aselobj(arSelObj)
Selobj = arSelObj[1]
Selobj.AddObject('CursorAdapter','myCursorAdapter')
Release Selobj,arSelObj
因为Custom是不可视的类,所有,即使它含有了这样的一个对象,也不能从下拉列表中选择到这个对象从而对它进行编辑。不过这已经够了,我们可以直接在myCursorAdapter编写关于CA的代码。