示例类库

Visual FoxPro 示例类库对功能进行了封装,使您可以很容易地将它们添加到自己的应用程序中。Solutions 示例对大多数的类都描述了使用方法。这些示例类包含在下面的文件中:

Buttons 类库

Buttons.vcx 包含下面的类。

说明
CmdOK 一个命令按钮,用来释放它所在的表单。如果这个表单处于一个表单集中,cmdOK 释放这个表单集。
CmdCancel CmdOK 的一个子类,标题属性被设置为“Cancel”。
CmdHelp 一个命令按钮,可激活它所在的表单对应 HelpContextID 的帮助信息。
MailBtn 带有一个命令按钮、一个 Microsoft MAPI Message 控件和一个 Microsoft MAPI Session 控件的容器。命令按钮的 Click 事件代码可注册到邮件上,并组成一个消息,此消息包含一个表中的当前记录值。

如果要查看使用 MailBtn 类的有关信息,请参阅在 Visual FoxPro 的 SAMPLES\SOLUTION\OLE 目录下的 SENDMAIL.SCX 文件。

VCR 一组表单定位按钮,允许用户将记录指针在表中向上、向下移动或者定位到表的头部和底部。

将 Skiptable 属性设置为想要移动记录指针的表的别名。如果 Skiptable 为空,记录指针将在当前选定的工作区内移动。


Samples 类库

Samples.vcx 包含下面的类。

说明
CboFontName 一个组合框,显示当前系统内全部可用的字体。
CboFontSize 一个组合框,为某个字体显示全部的可用字体大小。将一个字体名字传递给 FillList,可激活这个组合框。 nLargestFont 和 nSmallestFont 属性可以定出字体大小的上界和下界。您可以将此控件和 cboFontName 类连在一起使用。在 cboFontName 对象的 InteractiveChange 事件中,调用 cboFontSize 对象的 FillList 方法程序:

THISFORM.cboFontSize1.FillList(THIS.Value)

有关使用此类的示例,请参阅在同一类库中的 tbrEditing 类。

Clock 一个容器,显示当前的日期和时间。

在 Solutions 示例中, “Display a system clock”组件也使用 Clock 类。

Datachecker 一个用来管理数据冲突的自定义类。如果将缓冲区里的数据写入表中时遇到了数据变化,在 Buttons.vcx 中 VCR 类的 Error 事件代码就会调用该类的 CheckConflicts 方法程序。

nConflictStatus = ;
THIS.DataChecker1.CheckConflicts()

在 Solutions 示例中,“Run multiple instances of a form”组件使用此类检查数据冲突。

有关的详细内容,请打开此类,并阅读代码注释。

Distinct_values
_combo
一个组合框,列出 ControlSource 别名中不同的值。例如,如果将此类添加到一个表单上,并将 ControlSource 属性设置为“customer.country”,则这个组合框将显示 customer 表中的所有国家/地区,但对相同的国家/地区名字只显示一次。
FrmNoTitle 带有属性设置的一个表单,不显示标题。如果想在一个独立的窗口上显示信息,可以在此类的基础上创建一个对象,然后使用表单的图形方法程序。

在 Solutions 示例中,“Display line animation on a form”组件也使用不带标题的表单显示动画。

Lookup_combo 一个组合框,很容易用它显示一个字段的值。例如,当把 ControlSource 绑定到另一个字段上(如一个公司的 id 号)时,可显示公司的名字。该类有四个自定义的属性:

order_column: 用来给表排序的列(可选)。

lookup_table: 用来填充组合框的表。

display_column: 要显示的表的列。

return_column: 值被写到 ControlSource 中的列。

MoverLists 带有两个列表框和四个命令按钮的容器。用户可以通过单击命令按钮或者直接拖放,将选定的项从一列移动到另外一列上。

需要确保每个列的 RowSourceType 属性设置为 0,并使用 AddItem 方法程序向源列表框中添加项。

MoverLists 有三个自定义的属性:

CanDropIcon: 在拖放时,用来显示有效操作的光标。

NoDropIcon: 当进行放下操作时,不能将选定的项添加到列表框中时,所显示的光标。

DragThreshold: 在开始拖动操作之前,像素的数目。

在 Solutions 示例中,“Move items between list boxes”组件也描述了如何使用此类。

Print_reports 一个模式表单,允许用户预览报表,也可将报表打印或者输出到一个文件中。可以将此类的 cReport 属性设置为报表名字,或者将这个报表名字作为一个参数传递:

o = CREATEOBJECT(print_reports, ;
“myreport.frx”)

QBF 带有三个命令按钮的容器。将此类和 VCR 类添加到一个带有数据绑定控件的表单上。当用户选择“Enter QBF”时,控件中的值被取消。当用户选择“Query”时,用户输入到控件的值指定表上所用的筛选条件。

控件需要一个 ControlSource 设置,而控件的父类只能为表单,不能为其他的容器。

在 Solutions 示例中,“Create a query by example form”组件也描述了如何使用此类。

Resizable 一个自定义的类,在运行时刻,可重新定义表单上控件的尺寸和位置,并保持它们的相对尺寸和位置。将此类添加到一个表单上,并在表单的 Resize 事件里,调用 AdjustControls 方法程序:

THIS.Resizable2.AdjustControls

Resizable 需要您设置两个自定义的属性:

RepositionList: 一个字符串,包含要重新定位的对象的全部类。

ResizeList: 一个字符串,包含要重新定义大小的对象的全部类。

在 Solutions 示例中,“Resize and reposition controls at run time”组件也描述了如何使用此类。

RTFcontrols 一个容器类,包含 cboFontName、cboFontSize 以及“粗体”、“斜体”和“前景颜色”使用的命令按钮。在 cboFontName 的 InteractiveChange 事件中刷新 cboFontSize 控件,但对于“粗体”、“斜体”和“前景颜色”使用的命令按钮来说,没有添加附加的功能。

在 Solutions 示例中,“Use the RichText control”组件也描述了如何使用此类。

SoundPlayer 此类可以用来演示一个非可视的多媒体文件,如一个 .WAV 声音文件。有关的详细内容,请参阅“示例多媒体类”
StopWatch 带有一个定时器和标签的容器类,可显示跑表的值。

StopWatch 有三个自定义的方法程序可供您使用:

Start: 启动跑表。

Stop: 停止跑表。

Reset: 将显示的时间重新设置为 0:00。

在 Solutions 示例中,“Display a stop watch”组件也描述了如何使用此类。

TbrEditing tbrEditing 有一个自定义的属性和一个方法程序可供您使用:

nAppliesTo Property: 本属性可设置为 1、2 或 3:

  1. 在活动的表单上,用户的选择会影响当前的控件。

  2. 在活动的表单上,用户的选择会影响所有的文本框和编辑框。

  3. 在活动的表单上,用户的选择会影响所有的控件。

Refresh: A将一个对象的引用作为参数接受,并将所有的编辑控件设置为该对象相应的值。并在一个控件的 GotFocus 事件中调用 Refresh 方法程序。

在 Solutions 示例中,“Change font attributes”组件也描述了如何使用此类。

Videoframe 此类可以用来演示一个可视的多媒体文件,如 Windows 的一个视频文件。有关的详细内容,请参阅“示例多媒体类”

Typelib 类库

Typelib.vcx 包含下面的类。

说明
Typelib 一个容器类,包含一个 Foxtlib.ocx 控件。此类的 ExportTypeLib 方法程序调用 Foxtlib 控件的方法程序来读取 .OLB、.TLB 和 .EXE 文件中的类型库的信息。

在 Solutions 示例中,“View type library information”组件也描述了如何使用此类。


Utility 类库

Utility.vcx 包含下面的类。

说明
Arraylib 一个自定义的类,其方法程序可以插入、删除数组元素,搜索数组列。
Execsp 一个自定义的类,其方法程序可以在一个远程数据库上很方便的进行 SQL pass-through,并能执行存储过程。
Filelib 一个自定义的类,其方法程序可以对文件名字进行操作时,执行一般的字符串任务,诸如移去文件扩展名,向路径添加一个反斜杠,等等。
Menulib 一个自定义的类,其方法程序可以根据一个数组创建一个快捷菜单。

在 Solutions 示例中,“Create dynamic shortcut menus”组件也描述了如何使用此类。


Registry 程序

Registry.prg 包含下面的类。

说明
FileReg Registry 类的一个子类,其方法程序可以读取具有特殊的文件扩展名和路径的应用程序。
FoxReg Registry 类的一个子类,其方法程序可以向 Windows Registry 中读写 Visual FoxPro 设置。
ODBCReg Registry 类的一个子类,其方法程序可以读取 ODBC 数据源和驱动程序的信息。
OldINIReg Registry 类的一个子类,其方法程序可以向一个 .INI 文件中进行读写操作。
Registry 一个自定义的类,其方法程序可以访问 Windows API 函数来进行 Windows 注册操作。

有关使用注册类的示例,请运行 Visual FoxPro 的 Samples\Solution 文件夹中的 Solution.app 文件。