使用VisualFoxPro的ProgressBar控件

文章作者 100test 发表时间 2007:03:10 18:17:34
来源 100Test.Com百考试题网


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 运行该表单来显示温度计。



相关文章


计算机等级考试二级VB考点分析之对象及其操作(5)
使用VisualFoxPro的Slider控件
计算机等级考试二级VB考点分析之对象及其操作(3)
使用VisualFoxPro的ProgressBar控件
计算机等级考试二级VB考点分析之对象及其操作(2)
计算机二级VF程序设计的实例
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛