| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1476 人关注过本帖, 1 人收藏
标题:动手做一个公用进度条类,并让它可以随时中止操作
只看楼主 加入收藏
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:443
专家分:582
注 册: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
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
非常不错的功能,赞!

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2023-04-14 07:57
aqyejun
Rank: 4
等 级:贵宾
威 望:10
帖 子:147
专家分:113
注 册: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
等 级:版主
威 望:32
帖 子:412
专家分:1646
注 册: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
快速回复:动手做一个公用进度条类,并让它可以随时中止操作
数据加载中...
 
   



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

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