Visual Foxpro 的 ActiveX控件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Visual FoxPro 的 ActiveX 控件
简介
Visual FoxPro 包括许多 ActiveX (原来的OLE) 控件,用于添加大量新功能到你的应用程序,它们包括:TreeView、ListView、StatusBar、CommonDialog等控件,允许你创建 Windows 9x 风格的应用程序。
另外,如 MAPI 和Comm 控件,允许你添加 messaging 和串口控件到你的应用程序。
这些控件,一些没多大用处:如"threed" 控件;有些控件与 VFP 自身已有控件只有极小差异,并且看起来只能用于 Visual Basic 或 or Access。
ActiveX 控件很容易接触到:只需从表单控件工具栏中的查看类菜单中选择 ActiveX 控
件,会有 30 个新的控件出现在工具栏中。
就象 VFP 自身的控件一样简单地从工具栏中拖动一个
控件到表单中,给它取一个名字,设置一些属性。
除 VFP 属性表外,各控件有一个自定义属性表。
要访问该自定义属性表,在控件上右击并从出现的菜单中选择适当的项。
要想做得更好,你可以利用VFP 是唯一的允许你派生ActiveX控件并添加附加行为的开发
环境这一事实。
例如,你可以为一个控件建立一个封装类来隐藏它的复杂性和使其便于使用,或
添加自定义属性和方法来进一步扩展控件功能。
我只试验了少量控件,并提供这些子类的源代码。
帮助文件包括了控件的属性,事件和方法(PEM)文档。
共有三个帮助文件:
\WINDOWS\SYSTEM\MSACAL70.HLP (日历控件),
\WINDOWS\SYSTEM\SYSINFO.HLP (SysInfo 控件),和
\VFP5\CTRLHELP\CTRLREF.HLP (其它控件)。
通常,你可以在表单设计器或类设计器中选定一个 ActiveX 控件并按下 F1 来查看该控件的帮助主题(我将在稍后注明一些例外)。
但是,这些新控件的文档对 VFP 程序员没有太大的帮助:文本和示例是针对于 Visual Basic 或 Access,一些文档的结构是离奇的,并存在着大量的错误和疏忽。
我将指出各控件的这些情形。
由于有许多新控件本文时间和内容的限制,我不可能全部描述它们。
我选择了我认为大多数用户可能会使用的控件:
ImageList控件,
TreeView控件,
Common Dialogs控件,
Calendar控件,
Progress Bar控件,
Slider控件。
本文焦点是如何在 VFP 中使用这些控件,给出有用的示例,并讨论最普通的属性事件和方法,因此你可以定制它们的外观或行为。
Visual FoxPro 的 ActiveX 控件的添加
表单——> 菜单——> 工具——> 选项——> 控件——> ActiveX控件——> 添加ActiveX文件
——> 选定 ActiveX控件(如Ms Slider、Ms Progress Bar、Calendar、Ms Common Dialog、CtreeView、Ms TreeView、Ms ImageList等)——> 确定
表单——> 工具栏——> 表单控件工具栏——> 查看类——> ActiveX控件——> 调出控件工具栏
使用 Visual FoxPro 的 ImageList 控件
ImageList 控件非常简单,但因为我论述的其它控件要用到它,所以我们将首先讨论它。
ImageList 控件预载入一些图象,因此其它控件(如 TreeView 和 ListView 控件) 可以拥有图象资源。
此外,它自己并不做任何有用的事情。
虽然该控件有少量属性,事件和方法,你可能不会用到它们。
通常,你会使用ImageList 控件的属性表 (可在其上右击鼠标调出) 来为另一个控件载入你需要的图象并设置图象的大小和颜色。
要载入图象到 ImageList 控件,简单地从 ActiveX 控件工具条上拖动一个到表单上,修改它的名字,调出ImageList 控件的属性表,选择 Images 页,并插入你需要的图形。
各图形的索引值(从 1 开始) 用于其它控件选择一个图象。
例如我们将很快看到的 TreeView 控件,肯的一个 Add 方法来添加一个新节点,并使用了相关ImageList 控件的索引号作为节点使用的图象。
ImageList 控件位于 COMCTL32.OCX (in \WINDOWS\SYSTEM) 其帮助文档在CTRLREF.HLP中。
使用 Visual FoxPro 的TreeView 控件控件
VFP 5.0的新的ActiveX控件TreeView是一个有力的、可视的、吸引人的工具, 你可以将它使用于许多应用程序。
但是,其使用的复杂和技术文档的简单使很多人望而却步。
本文探索了一些使用TreeView的有用的技术。
VISUAL FoxPro 5.0 包含了很多新的ActiveX (原来的OLE) 控件,这些控件可以为你的应用程序增加很多新功能。
这些控件包括TreeView、ListView、StatusBar、和CommonDialog 控件, 允许你为你的应用程序建立Windows 95 风格的界面。
ActiveX 控件很容易找到: 在表单控件工具栏中的查看类菜单中选择ActiveX 控件, 会出现30 个新的控件。
简单的从工具条拖放一个控件到一个表单中,就象使用VFP自身的控件一样, 给它一个名字, 设置一些属性, 等等… 在附加到VFP 的属性表单, 每一个控件都有一个定制的属性表。
要访问这个属性表, 在控件上右击鼠标并从出现的快捷菜单中选择适当的项。
使用 Visual FoxPro 的Common Dialogs 控件
如果你用过 FoxPro GETFILE() 和 PUTFILE() 函数。
你可能对它们多少有些遗憾:
✧没有办法改变对话框的标题。
✧PUTFILE() 函数总是询问用户是否想复盖已存在的文件。
✧使用两个函数时。
指定的路径必须存在,否则将显示一条错误信息。
为了得到更大的灵活性。
你需要使用随 VFP 5 同时发布的 Common Dialogs 控件(在 \WINDOWS\SYSTEM 目录下的 COMDLG32.OCX 中)。
该控件称为 "Common dialogs" 是因为它可以显示文件、颜色、字体和打印对话框。
所有这些对话框提供了比 VFP 的相同功能更大的灵活性。
例如,当在 VFP 中使用 GETFONT() 和 GETCOLOR() 函数时,你控制不了所有的东西,如非 TrueType 字体是否可用或用户是否可自定义颜色。
Common Dialog 中的字体和颜色对话框就有这种功能。
由于时间限制。
在本章中我们只集中讨论文件对话框。
如果你想知道关于颜色,字体和打印对话框的更多信息。
请参阅 ActiveX 控件的帮助文件。
注意 Common Dialogs 控件没有出现在帮助文件的目录页中。
但可以在选定控件后按下 F1 键或在帮助索引中搜索 "Common Dialog" 来找到它们。
方法
Common Dialogs 控件有五个方法,它们都没有参数:
∙ShowOpen() 显示打开文件对话框;
∙ShowSave() 显示保存文件对话框;
∙ShowPrinter() 显示打印机对话框;
∙ShowFont() 显示字体对话框;
∙ShowColor() 显示颜色对话框。
在本章中我们只使用了前两个方法。
属性
以下是最常用的 Common Dialogs 控件的文件对话框的属性 (一些属性也用于字体,颜色和打印机对话框);其它较少使用的属性的信息参见它们的帮助文件:
∙CancelError:如果想在用户选择取消时生成一个错误(错误号1429),设置该属性为 .T.。
可以在控件的Error 方法中温和地捕捉并处理错误。
这是必须的,因为在类似的 VFP 函数返回一个特殊值时(通常是一个空格) 来指明用户选择了取消,但这些对话框不会返回值。
∙DefaultExt:如果用户没有输入扩展名,该扩展名自动添加到用户输入的文件名后面。
∙DialogTitle:对话框窗口标题。
∙FileName:用于文件名的初值,添加它的内容到从对话框返回的用户输入值上。
如果不允许选择多个文件,或虽允许但用户只选择了一个文件,FileName 包含了选定文件的完整的路径和文件名。
如果允许选择多个文件且用户选择了一个以上的文件,FileName 在选定文件列表前,含有以分隔符与选定文件分开的,选定文件的路径(多个文件之间以分隔符分开,但不带路径)。
在 Windows 95 和 NT 4 中分隔符是CHR(0),在 Windows NT 3.51 中分隔符是一个空格。
例如,如果用户从 VFP 的示例数据目录中选择了三个表,FileName 的内容可能是 C:\VFP5\SAMPLES\DATA <分隔符> CUSTOMER.DBF <分隔符> ORDERS.DBF <分隔符> ORDITEMS.DBF"。
关于分解 FileName 为路径和不同的文件名,请参见 SFFileDialog 类的 SetProperties() 方法(稍后讲述)。
∙FileTitle:若不允许选择多个文件,返回不含路径的选定文件的名字.否则返回值为空。
∙Filter:可接受文件说明。
Filter 有两个部分:用户所见到的说明(如,"数据库文件") 和这些文件的扩展名描述(如 "*.DBC")。
说明和描述以竖线( | )分开。
可以用多个竖线分隔的方式提供一个以上的 filter。
如,"数据库文件 | *.DBC | 表 | *.DBF | 全部文件 | *.*"。
∙FilterIndex:使用的默认 filter 。
第一个 Filter 属性是 1。
∙Flags:该属性控制对话框的外观和行为。
可使用的值见后。
∙HelpFile:当用户单击对话框中的帮助按钮时使用的帮助文件的名字。
∙HelpCommand:该属性的最常用设置是(其它设置参见该控件的帮助文件) 0x1 (使用 HelpContextID),0x101 (使用关键字),或 0x105 (使用部分关键字)。
注意:0x 符号,是 VFP 5 的新功能,指明一个十六进制值。
∙HelpContext:当 HelpCommand 的值设置为 0x1 时,要显示的帮助文件中的主题的 HelpContextID。
∙HelpKey:当 HelpCommand 的值设置为 0x101 或 0x105 时,要在帮助文件中查找的关键字。
∙InitDir:对话框要显示的初始目录。
注意帮助中提到了另外两个属性,Path 和 Drive,但它们并不存在。
Flags 属性的行动与 VFP 的 MESSAGEBOX() 的 DialogBoxType 参数相似;可以按你的需要添加多个不同的值来组合它的外观和行为。
不幸的是,即使 flag 对于多种类型的对话框具有相同的意思,但它可能有不同的值。
例如,显示帮助按钮 flag 对于颜色对话框是 0x8 而对于文件对话框是 0x10。
因为各个对话框的设置值相当神秘,我创建了一个叫做 COMMDLG.H 的包含文件用于定义各个不同的值的常数。
要设置控件的 Flags 属性,简单的添加你想组给的设置值即可。
例如,要显示帮助按钮和复盖警告,可以这样设置:
This.oCommonDialog.Flags = cnFILEDLG_OVERWRITE + cnFILEDLG_SHOWHELP
以下是最常用的 Flags 选择(其它的参见帮助文件):
∙Allow Multiple File Selection (0x200;cnFILEDLG_MULTIPLE 在 COMMDLG.H 文件中):允许选择多个文件。
如果开启了这一开关,对话框的出现与一般的 Windows 95 对话框相当不同,除非你也添加了 0x80000 (cnFILEDLG_EXPLORER) 到 Flags 中;注意帮助文件中的该值是错误的 0x8000。
∙Prompt if File Doesn't Exist (0x2000;cnFILEDLG_PROMPTNEW):提示用户创建一个目前尚不存在的文件。
如果开启该选项,就不需要开启"Path Must Exist" 和 "File Must Exist" 标志,由于它们是自动设置的("Path Must Exist" 开启且"File Must Exist" 关闭)。
该标志未用于 Save 对话框。
∙File Must Exist (0x1000;cnFILEDLG_FILEEXIST):如果用户输入的文件名不存在,显示一个错误信息。
如果开启该选项,"Path Must Exist" 标志自动开启。
该标志未用于 Save 对话框。
∙Path Must Exist (0x800;cnFILEDLG_PATHEXIST):如果用户输入的路径不存在,显示一条错误信息。
VFP 的 GETFILE() 和 PUTFILE() 函数的该开关是永远地开启的,这可能也是你为什么要选择 Common Dialogs 控件的理由吧。
∙Hide Read Only (0x4;cnFILEDLG_HIDERO):隐藏对话框中的"只读"复选框。
∙Help Button (0x10;cnFILEDLG_SHOWHELP):在对话框中显示帮助按钮。
∙Overwrite Prompt (0x2;cnFILEDLG_OVERWRITE):如果用户输入了一个已存在的文件名,显示一个"复盖该文件"信息。
该标志仅用于 Save 对话框。
VFP 的 PUTFILE() 函数总是保持该开关为开,这可能是你为什么要选择 Common Dialogs 控件的另一个理由。
∙Share Aware (0x4000;cnFILEDLG_SHAREAWARE):允许用户选择一个已被其它应用程序打开的文件。
∙Don't Change Directory (0x8;无常数定义):文件对话框会做一些你可能不希望的事:如果用户选择了一个与当前目录不同的目录,在退出对话框时,该目录将变为当前目录。
该设置可避免出现上述情况。
派生 Common Dialogs
为使 Common Dialogs 控件更易于使用,我创建了一个该控件的抽象子类,叫做 SFCommonDialog (在源代码中的 ACTIVEX.VCX 类库中)。
SFCommonDialog 具有两个新的自定义属性:lShowHelpButton (设置它为 .T.来显示帮助按钮) 和 lCancelled (如果用户取消了该对话框,设置它为 .T.)。
还有一个新的自定义方法 (SetFlags) 用于设置一些属性,这样我们可以发现用户是否在对话框中选择了取消。
设置自定义属性 lCancelled 为 .T.时,Error 方法处理用户选择取消的情况(CancelError 自动设置为 .T.这样可以在用户选择取消时,触发一个错误)。
我还创建了一个叫做 SFFileDialog 的 SFCommonDialog 的子类,用于特定的文件对话框。
SFFileDialog 使用 COMMDLG.H 包含文件。
它具有一些自定义属性用于为 Flags 属性提供不同的选项,这样你不必记住什么常数用于什么设置。
这些属性,在默认情况下均设置为 .F.,它们是lAllowMultiple,lFileMustExist,lOverWritePrompt,lPathMustExist,lPromptNew,lShareAware 和 lShowReadOnly。
另一个自定义属性,cPath,设置为用户选择的文件名中的路径。
cOldCurrDir 是一个受保护的自定义属性用于用于保存调用对话框前的当前目录。
一个自定义的数组属性,aFiles,用于保存用于保存用户选择的文件名(没有路径)。
两个自定义方法OpenFile() 和 SaveFile() 用于显示适当的对话框。
这两个方法调用 SaveDirectory() 和 RestoreDirectory() 自定义方法来保存和恢复当前目录,SetFlags() 设置先前提到过的自定义属性来将 Flags 属性设置为适当的值,SetProperties() 适当地设置 cPath,lCancelled 和 aFiles 属性。
好了,现在我们建立了它,SFFileDialog 有什么好处?只要我需要让用户选择一个文件时,我使用它.因为它在外观和行为上给我以比 PUTFILE() 或 GETFILE() 更多的控制能力。
例如,假定你的应用程序中有一个导入功能。
如果用户具有三个要导入的文件,你调用 PUTFILE() 或 GETFILE() 三次吗?当他们可以在一次选择多个文件并让导入函数进行一次性处理时,你的应用程序显然更易于使用,特别是在处理费时较多时,这种优势更为明显。
这里说明如何使用该控件。
从项目管理器中拖放一个 SFFileDialog 对象到表单中。
SFFileDialog 是一个非可视控件,因此它在运行时不会显现在表单中(如果对于显示一个对话框的对象是一个非可视类感到奇怪,记住对话框在控件的方法未被调用前是不会显示的)。
按需要设置控件的各种属性。
例如,要允许用户选择多个文件,设置 lAllowMultiple 属性为 .T.,表单上的相关按钮的 Click() 方法将会调用 SFFileDialog 对象的OpenFile() 方法来显示一个打开文件对话框。
当从 OpenFile() 返回时,它会检查 lCancelled 属性来确定用户
是否在对话框中按下了取消按钮。
如果没有,代码会使用 aFiles (包含选定文件的文件名) 和 cPath (包含文件所在的目录名) 属性来导入文件。
这些代码看起来象下面所示:
with Thisform.oFileDialog .OpenFile() if not .lCancelled for lnI = 1 to alen(.aFiles) lcFile = .cPath + .aFiles[lnI] Thisform.ImportFile(lcFile) next lnI endif endwith
源代码中的 COMMDLG 表单是一个打开和保存对话框。
它包含一个 SFFileDialog 对象,并且表单中的许多对象的 ControlSource 具有该对象的属性。
你可以设置不同的标志和其它属性并单击"测试"按钮来查看对话框的外观和行为效果。
其它注意事项
VFP 的 GETFILE() 和 PUTFILE() 函数有一些 Common Dialogs 控件所不具备的功能:
∙可以指定文件名旁边显示的文本来代替默认的 "File name" 。
但是,由于指定的要显示的文本很短(只有10 个字符),所以它没有多大意义。
∙GETFILE() 允许你指定打开按钮旁的提示信息并指明是否显示一个"新建"或"无"按钮。
∙正如我先前所提及,当在对话框中选择取消时,GETFILE() 和 PUTFILE() 返回一个空的文件名。
你可以设置 CancelError 属性为 .T. 来处理这种情况并捕捉1429 号错误(典型地设置 FileName 和 FileTitle 属性为空)。
使用 Visual FoxPro 的Calendar 控件
Calendar 控件位于 MSACAL70.OCX 中(在 \WINDOWS\SYSTEM 目录中; 在帮助文件中错误的描述为MSACAL.OCX)。
帮助文件名为 MSACAL70.HLP。
该控件提供了在你的应用程序中包含日历的能力。
该控件的一个显而易见的用处是当用户在日期型字段上右击鼠标时显示一个日历让用户选择一个日期值。
方法和事件
Calendar 控件中的方法主要用于编程地控制日期,包括 NextDay,NextWeek,NextMonth,PreviousDay,PreviousWeek 和 PreviousMonth。
当然也可以提供按钮或其它方法来调用这些方法,但由于用户可以在日历中单击各种控件来修改日期,所以我没有在这方面作过多的探索。
除 Click,DblClick 和 KeyPress 这样的常用事件,Calendar 控件还有 AfterUpdate,BeforeUpdate,NewMonth 和 NewYear 事件,这些事件允许你在用户改变了某些东西后,执行一些可能需要的特殊的处理。
我想你会用到的最常用的事件是 DblClick,该事件可用于当用户选择了一个日期后,释放或隐藏 Calendar 控件.
属性
Calendar 控件的属性比它的方法和事件更有趣。
你可能想设置一些属性,如颜色(BackColor,DayFontColor,GridFontColor,GridLinesColor,TitleFontColor),字体 (DayFont,GridFont,and TitleFont),和控件的其它初始显示属性(DayLength,FirstDay,GridCellEffect,MonthLength,ShowDateSelectors,ShowDays,ShowHorizontalGrid,ShowTitle,and ShowVerticalGrid),这些属性可以通过右击菜单从 Calendar 控件属性表中进行访问。
Value 属性包含在日历控件中选定的日期,Day,Month 和 Year 属性包含日期的相关部分的值。
通常,你会设置控件的 Value 来指定一个日期(例如,在控件的 Init 事件中),该日期是被高亮显示的默认日期,在用户选定一个日期后,可以从 Value 中读取用户选择的日期值。
示例
我创建了一个包含日历控件和一些按钮的容器类(源代码中的 ACTIVEX.VCX 类库中的 SFCalendaron 类)
和一个 SFDateSpinner 类(源代码中的 CONTROLS.VCX 类库中) ,适用于在用户从右击菜单选择"日历"时实例化SFCalendar。
SFDateSpinner 类是一个容器类,拥有一个文本框和数码器(只有上下键头是可访问的)。
数码器用于增加和减少文本框中的日期值,文本框的 KeyPress 方法中的代码模仿快速填充日期按键。
当用户在文本框上右击时,调用 ShortcutMenu 方法来显示一个快捷菜单(采用硬编码并封闭于控件的该方法中)。
如果用户从菜单中选择了"日历",会调用 ShowCalendar 方法。
该方法从 cCalendarClass 属性(该属性的默认值是 SFCalendar )是指定的类中,实例化一个对象。
NEWOBJ.PRG 用于确保存该类所在的类库是打开的。
SFCalendar 控件接收一个对象参数,因此它可以在对象释放前修改对象的值为用户选择值。
当用户双击一个日期或选择保存或退出按钮时,该对象被释放。
源代码中的 CALENDAR 表单包括一个 SFDateSpinner 对象,因此你可以试一试这些类。
使用 Visual FoxPro 的ProgressBar 控件
ProgressBar 控件位于 COMCTL32.OCX 中,其帮助文件是 CTRLREF.HLP。
该控件给我们一个 Windows 95 风格的进度条,就象你从一个驱动器中复制一个大的文件到另一个驱动器时 Windows 95 所显示的进度条一样。
该控件可用于较费时的操作而你又想向用户显示处理进程时。
示例包括执行长的计算(如工资表计算),在打印前执行的复杂查询,保存记录等。
进程条可以在处理了每条记录或某一批记录时更新,或在任务的各步中进行更新。
方法和事件
ProgressBar 控件响应一些与其它 VFP 控件相关的方法和事件:Click,Drag,DragDrop,DragOver,MouseDown,MouseMove,MouseUp,Move,ShowWhatsThis 和 ZOrder。
属性
与 Calendar 控件相比,ProgressBar 控件的属性比其方法或事件更为有趣,主要是因为它是视觉控件。
许多影响控件外观的属性更易于在设计时从 VFP 的属性表中或 ProgressBar 控件的属性表中进行设置。
这些属性包括 Align (决定控件位置是否可移动或它是否自动靠向表单的上,下,左或右边沿),Appearance (平面或立体) 和 BorderStyle。
我们更感兴趣的是运行时的属性 Min,Max 和 Value。
Min 和 Max 提供了控件值的范围,默认值是 0 到100。
控件的条的长度是由 Value 属性控制。
示例
源代码中的 ACTIVEX.VCX 包含一个 SFThermometer 类。
该类是一个带有进程条,一些标签和一个取消按钮的容器类。
它的自定义方法 SetTitle 和 SetMaximum 用于设置 "Main" 标签的标题和 ProgressBar 控件的最大值。
要更新温度计,用 Update 方法。
它接收两个参数:温度计的当前值和表单中的 "Current task" 标签的标题。
传递到 Update 的值的转换取决于表单的 lPassPercent 属性的设置。
如果 lPassPercent 是 .T.,Update 期望一个百分比值; 如果 lPassPercent 是 .F.,如果 lPassPercent 是 .T.希望一个值并用该值和最大值的比来计算百分比。
SFThermometer 使用了一种非常有趣的技术来允许从一个 "Hard" 循环中中断。
Update 方法检查是否鼠标移动到了取消按钮上及该按钮是否被按下。
如果是,它用新的 doevents 命令来允许对事件进行处理(也就是说,取消按钮按下),然后设置一个用户取消处理的标志。
循环调用 Update 方法检查该标志以决定是否需要继续处理。
我原先在 Update 方法中使用 doevents来允许按下取消按钮(而不是检查鼠标位置和按下状态),但这样要花大量的时间!
PROGRESS.PRG 是一个示例程序用于展示 SFThermometer 的使用。
PROGRESS 表单只是有一个SFThermometer 容器,PROGRESS.PRG 运行该表单来显示温度计。
使用 Visual FoxPro 的Slider 控件
Slider 控件在 COMCTL32.OCX 中,其帮助文档是 CTRLREF.HLP。
Slider 控件与音响中的音量控制滑动块相似;它用一个条提供控制的范围值和一个可以沿着条拖动的指针来指示选定值。
该控件常用于输入数值型的值,
但更多的是用于 "定位" 或 "性质" 对话框类型而不是数据输入,TextBox 或更适于数据输入。
方法和事件
Slider 控件响应一些与 VFP 的控件的方法和事件相同的方法和事件:Click,Drag,DragDrop,DragOver,GotFocus,KeyDown,KeyPress,KeyUp,LostFocus,MouseDown,MouseMove,MouseUp,Move,Refresh,SetFocus,ShowWhatsThis 和 ZOrder。
Change 事件与其它控件的 InteractiveChange 事件相似;它在 Value 属性改变时激发。
在沿着条拖动滑杆时,Scroll 事件连续不断地激发。
ClearSel 方法清除控件的选定区域(见下述)。
GetNumTicks 返回控件中的 tick 数。
属性
Slider 控件的许多属性影响控件的外观,它们在设计时很容易从右击菜单中调出 VFP 属性表或 Slider 控件属性表进行设置。
它们包括 BorderStyle,LargeChange (当按下 PgUp 或 PgDn 或在 slider 的左边或右边单击鼠标时,slider 改变的 tick 数),SmallChange (当按下左右键头时,slider 改变的 tick 数),Orientation (横向或纵向放置),TickStyle (ticks 沿着顶/左,底右边沿交叉的出现或不出现) 和 TickFrequency。
我们在运行时更感兴趣的属性是 Min,Max 和 Value。
Min 和 Max 提供控件值的范围,默认值是 0 和 100。
slider 的沿着控件的位置由 Value 属性控制。
SelectRange 属性控制 slider 是否显示选定范围。
如果 SelectRange 设置为 .T.,SelStart 和SelLength 属性决定选定范围的起始位置和长度。
示例
源代码中的 SLIDER 表单显示了一个使用 Slider 控件的示例。
在VFP中,附送了一些.OCX文件,每个文件中均包含一个或几个ActiveX控件:
COMCTRL32.OCX: ImageList控件、ListView控件、ProgressBar控件、Slider控件、StatusBar控件、TabStrip 控件、ToolBar控件、TreeView控件
COMDLG32.OCX: Common Dialog控件
DBLIST32.OCX: MSDataCombo控件、MSDataList控件
FOXHWND.OCX: Visual FoxPro HWND控件
FOXTLIB.OCX: Visual FoxPro FOxTlib控件
GRID32.OCX: Grid控件
MCI32.OCX: Microsoft Multimedia控件
MSACAL70.OCX: Calendar控件
MSCOMM32.OCX: Microsoft Comm控件
MSMAPI32.OCX: Microsoft MAPI Message控件、Microsoft MAPI Session控件
MSOUT32.OCX: Outline控件
PICCLP32.OCX: PicClip控件
RICHTX32.OCX: Rich Textbox控件
SYSINFO.OCX: SysInfo控件
TABCTL32.OCX: SSTab控件
THREED32.OCX: threed Checkbox控件、threed Command Button控件、threed Frame控件、threed Group Push Button控件、threed Option Button控件、threed Panel控件
1、图像列表控件(ImageList)
ImageLIst控件是一个存储Image(图像)的数组,可以保存许多图像,以供其他控件使用。
所以它必须和其他控件或应用结合,才能显示出其强大的功能。
方法:
ADD:ADD方法有两个参数,前者指定添加图像的关键字,后者用LoadPicture函数装入指定的图像。
例:ThisForm.ImageLIat1.LIstImages.Add("Key1",LoadPicture("c:\MyPic\1.ico"))
属性:
NAME属性:无须多言,大家都明白
ImageHeight属性和ImageWidth属性:指定控件中图像的大小,不同尺寸的图像可以添加到一个ImageList 控件中,但它们反映出来的是、同样的大小,这取决于第一个加入的图像大小。
ListImages属性和Index属性:为了得到ImageLIst中存储的图像或把图像存储在控件中,必需使用这两个属性,ListImages是控件包含图像的集合,这两个属性使用形式如下:
ThisForm.ImageList1.ListImages(1) &&1为Index属性值.
语句表示引用控件的第一幅图像。
ThisForm.ImageList1.ListImages(1).Key
语句表示返回第一幅图像的关键字。
ListImages集合的属性和方法:
Count属性:返回集合中有多少幅图像
ThisForm.ImageLIst1.ListImages.Count
ADD方法:向集合中添加一幅图像
CLEAR方法:清除本集合中的所有图像
Item方法:访问本集合中一个指定的图像对象
ReMove方法:从本集合中删除一幅图像
其简单示例见附件
ProgressBar控件
ProgressBar控件的主要目的是显示操作过程的进度。
属性:
Max属性和Min属性:ProgressBar控件具有一个范围和一个当前位置。
范围反映了整个操作的全部过程,而当前位置表示过程的进展。
Max和Min属性用来设置这个范围。
例:
ThisForm.ProgressBar1.Max = 100
ThisForm.ProgressBar1.Min = 0
Value属性:控件的当前位置有该属性决定。
ThisForm.ProgressBar1.Value = 值
Height属性和Width属性:这两个属性决定填充控件小块的尺寸和数目。
BorderStyle属性:决定控件的外观。
0 - CcNone 没有边框
1 - CcFixedSingle 有单线边框。