求一个命令行创建类的事例

zhjno1xp 2007-06-25 05:01:25
帮助里这么写的,感觉不是很直观,能不能给一个实际的例子看一下啊,谢谢
DEFINE CLASS ClassName1 AS ParentClass [OLEPUBLIC]
[[PROTECTED | HIDDEN PropertyName1, PropertyName2 ...]
[Object.]PropertyName = eExpression ...]
[ADD OBJECT [PROTECTED] ObjectName AS ClassName2 [NOINIT]
[WITH cPropertylist]]...
[[PROTECTED | HIDDEN] FUNCTION | PROCEDURE Name[_ACCESS | _ASSIGN]
[NODEFAULT]
cStatements
[ENDFUNC | ENDPROC]]...
ENDDEFINE
...全文
153 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2007-06-25
  • 打赏
  • 举报
回复
这是帮助中的示例:

示例
示例 1 *NEW
下例从 Form 基类中创建一个名为 MyForm 的类,并创建一个受保护的属性 Version。类中还包含另一个名为 Caption 的属性,但其不受保护。类定义分别初始化 Version 和 Caption 的默认值为"1.0" 和 "My Form"。

复制程序代码
DEFINE CLASS MyForm AS Form
PROTECTED Version
Version = "1.0"
Caption = "我的表单"
ENDDEFINE


示例 2 *NEW
下例从 Form 基类中创建表单 frmOLETest,并用 AddObject 方法添加一个名为 OCXTest、基于用 DEFINE CLASS 创建的类 BlueOLEContro 的对象,并为 Listview ActiveX 控件指定 OLE 类。在创建之前,使用.Object 关键字为控件的 BackColor 属性指定一个值。

复制程序代码
PUBLIC frmOLETest
frmOLETest = CREATEOBJECT('Form')
frmOLETest.Visible = .T.

frmOLETest.AddObject('OCXTest', 'BlueOLEControl', 'MSComctlLib.ListViewCtrl')
frmOLETest.OCXTest.View = 2
frmOLETest.OCXTest.ListItems.Add(1,'one','Item One')
frmOLETest.OCXTest.ListItems.Add(2,'two','Item Two')

DEFINE CLASS BlueOLEControl AS OLEControl
* 为 ActiveX 控件外形设置属性.
.Object.Backcolor = 16776960

* 为 OLE 容器控件设置属性.
Visible = .T.
Height = 100
Width = 200
ENDDEFINE


更详细的信息,请参见 AddObject 方法。


示例 3
下例示范了如何用 DIMENSION PEMName_COMATTRIB 子句定义一个类型库属性数组:

复制程序代码
#INCLUDE foxpro.h
DEFINE CLASS myOLEClass AS Custom OLEPUBLIC
MyProperty = 5.2
* 为 MyProperty 设置 COM 属性.
DIMENSION MyProperty_COMATTRIB[4]
myProperty_COMATTRIB[1] = COMATTRIB_READONLY
myProperty_COMATTRIB[2] = "在对象浏览中显示的帮助文本"
myProperty_COMATTRIB[3] = "MyProperty" && 适当采用大写.
myProperty_COMATTRIB[4] = "Float" && 数据类型
ENDDEFINE


可是,如果您只想设置 nFlags 元素,则不需要创建数组:

复制程序代码
#INCLUDE foxpro.h
DEFINE CLASS myOLEClass AS Custom OLEPUBLIC
MyProperty = "Test"
* 仅为 MyProperty 设置 nFlags 属性.
myProperty_COMATTRIB = COMATTRIB_READONLY
ENDDEFINE


示例 4 *NEW
下例从 Form 基类中创建名为 MyForm 的类,并创建一个基于 CommandButton 基类的命令按钮,以及一个基于 CheckBox 基类的复选框:

复制程序代码
DEFINE CLASS MyForm AS Form
ADD OBJECT cmdButton1 AS CommandButton
ADD OBJECT chkBox1 AS CheckBox
ENDDEFINE


与上面的示例一样,下例创建一个 MyForm 类,添加一个命令按钮和复选框到类中,并为命令按钮和复选框指定 Caption 属性的值。

复制程序代码
DEFINE CLASS MyForm AS Form
ADD OBJECT cmdButton1 AS CommandButton WITH Caption = "是"
ADD OBJECT chkBox1 AS CheckBox WITH Caption = "请单击"
ENDDEFINE


示例 5 *NEW
下例创建一个基于 Custom 类的名为 MyPublisherClass 的类,用 OLEPUBLIC 关键字指定其为,当包含在一个自动操作服务程序(Automation Servers)中时,自动操作客户程序(Automation Cliens)可以访问的类,用 IMPLEMENTS 子句继承类型库 MyBookStore.dll 中的 Publisher 类中的类定义,并包含 Publisher 界面的 ShowPrice 方法。

复制程序代码
DEFINE CLASS MyPublisherClass AS Custom OLEPUBLIC
IMPLEMENTS Publisher IN "MyBookStore.dll"
PROCEDURE Publisher_ShowPrice(cGetID AS Long) AS Short
ENDPROC
ENDDEFINE


示例 6 *NEW
下例创建一个基于 Form 基类的名为 MyForm 的类,并为 Click 事件定义一个过程。从该类创建的表单都包含一个 Click 事件,当点击表单时将显示一个对话框。

复制程序代码
DEFINE CLASS MyForm AS Form
PROCEDURE Click
= MESSAGEBOX('MyForm 被点击了!')
ENDPROC
ENDDEFINE


跟上面的例子一样,下例代码为添加到类的一个对象建立过程。这个事件的过程为命令按钮覆盖默认的 Click 事件。

复制程序代码
DEFINE CLASS MyForm AS Form
ADD OBJECT MyButton AS CommandButton
ADD OBJECT chkBox1 AS CheckBox
PROCEDURE MyButton.Click
= MESSAGEBOX('这是我的单击事件程序')
ENDPROC
ENDDEFINE


示例 7 *NEW
下例演示了可以如何使用 PROCEDUREcArrayName[] [AS Type][@][AS Type] 子句指定强制类型,其数组可以作为安全数组正确的写到类型库中:

复制程序代码
DEFINE CLASS mySession AS Session OLEPUBLIC
PROCEDURE GetWidgets1(aWidgets[])
ENDPROC
PROCEDURE GetWidgets2(aWidgets[] AS Integer)
ENDPROC
PROCEDURE GetWidgets3(aWidgets[] AS Integer @)
ENDPROC
PROCEDURE GetRS(oRS[] AS ADODB.Recordset @)
ENDPROC
ENDDEFINE


跟上面的例子一样,下面的代码演示了如何通过定义一个基于 COM 类的类型,指定强制的复合类型:

复制程序代码
DEFINE CLASS mySession AS Session OLEPUBLIC
PROCEDURE GetRS() AS ADODB.Recordset
x=CREATEOBJECT("ADODB.Recordset")
RETURN X
ENDPROC
PROCEDURE SetRS(oRS AS ADODB.Recordset @)
oRS=CREATEOBJECT("ADODB.Recordset")
ENDPROC
ENDDEFINE

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧