标题:动手做一个公用进度条类,并让它可以随时中止操作
只看楼主
iswith
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:154
专家分:101
注 册:2013-5-14
得分:0 
以下是引用倦猫1973在2023-4-13 13:05:35的发言:




我是不是需要说,用鼠标点击【取消(ESC)】按钮也可以中止呢?你不会是以为,我在进度表单上放这么一个按钮,纯是为了好看?

不是,你把Doevents 后面 Force加 上会更好。。。。
2023-04-13 14:40
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
得分:0 
加不加,那也是规划方面的事情了。先期默认为了效率不加,后面想了想不高兴加了个 loProgress.IsForce 这这这。。。。。
2023-04-13 15:16
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:0 
非常不错的功能,赞!

活到老,学到老! http://www. E-mail:hu-jj@
2023-04-14 07:57
aqyejun
Rank: 3Rank: 3
等 级:论坛游民
威 望:9
帖 子:121
专家分:99
注 册:2010-6-11
得分:0 
学习了

【独叶为舟】工作室
2023-04-14 11:24
linxb9576
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-8-11
得分:0 
回复 楼主 倦猫1973
学习!
2023-04-22 11:05
东海ECS
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:0 
首先,需要创建一个窗体(例如frm_progress1.vcx),并在其中添加一个进度条控件(例如progressbar1),以及一个按钮(例如btnCancel)用于中止操作。在窗体的代码中添加以下内容:

声明变量 PRIVATE lnMin, lnMax, lnPos PRIVATE lcCaption, lcMessage PRIVATE llCancelFlag

初始化方法 PROCEDURE Inits LPARAMETERS tnMin, tnMax, tcCaption, tcMessage lnMin = tnMin lnMax = tnMax lcCaption = tcCaption lcMessage = tcMessage lnPos = 0 llCancelFlag = .F. THISFORM.CAPTION = lcCaption THISFORM.progressbar1.MIN = lnMin THISFORM.progressbar1.MAX = lnMax THISFORM.progressbar1.VALUE = lnPos THISFORM.SHOW() DOEVENTS ENDPROC

刷新进度方法 FUNCTION Step LPARAMETERS tnStep lnPos = lnPos + tnStep IF lnPos > lnMax THEN RETURN .F. THISFORM.progressbar1.VALUE = lnPos THISFORM.SAVEDISPLAY() DOEVENTS RETURN .T. ENDFUNC

中止方法 FUNCTION IsCancel RETURN llCancelFlag ENDFUNC

中止按钮点击事件 PROCEDURE btnCancel.Click llCancelFlag = .T. THISFORM.HIDE() ENDPROC

然后在主程序中可以这样使用进度条类:

创建一个单进度对象 loProgress = NEWOBJECT("frm_progress1")
设置进度条 Titile, Min, Max loProgress.Inits(1, RecordCount("mytable"), "正在进行操作", "请稍候...")
循环操作 SELECT mytable SCAN
在此刷新进度条进度 IF !loProgress.Step(1) EXIT ENDIF
具体操作代码 ... ENDSCAN
关闭进度条 loProgress.Hide()
最后,需要在进度条的“中止按钮点击事件”(btnCancel.Click)中添加中止操作的代码,例如:

关闭进度条 THISFORM.Hide()
中止具体操作代码 ...

会当凌绝顶,一览众山小.
2023-04-22 11:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511884-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.065445 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved