| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1504 人关注过本帖, 1 人收藏
标题:动手做一个公用进度条类,并让它可以随时中止操作
取消只看楼主 加入收藏
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
结帖率:85.71%
收藏(1)
 问题点数:0 回复次数:4 
动手做一个公用进度条类,并让它可以随时中止操作
先看效果,在一个长耗时的操作中按下 ESC 是可以中止操作的。
图片附件: 游客没有浏览图片的权限,请 登录注册




其实办法实现很简单的啦,进度条类随你喜欢怎么做都行,大概前端程序也就这样子了,基本通用。
甚至加不加 loProgress.IsCancel 也是无所谓的,If loProgress.Step() = .F. Exit 也是可以的。

程序代码:
Local loProgress As frm_progress1 Of CAT_forms.vcx
Local lcOutPath As String
lcOutPath = "D:\OutPut\"

*-- 创建一个单进度对象
loProgress = NewObject("frm_progress1", "CAT_forms.vcx")     
*-- 设置进度条 Titile, Min, Max
loProgress.Caption = "正在导出 PDF 文件,请稍候..."
loProgress.Inits(1, RecCount("pdftmp"))
Select pdftmp
Scan
    lnBill_Id = Bill_Id 

    *-- 在此方法中刷新进度条进度,且增加一个 DoEvents,由于 DoEvents 很耗时,可以根据 Max 的大小选择每几行触发一次 DoDevents
    loProgress.Step() 
    ThisForm.grfStore2.grfExportFilename = Addbs(m.lcOutPath) + Alltrim(Bill_RefNo) + "_" + Alltrim(Bill_Kh) + "_" + Alltrim(Bill_Ys)
    Select * from pdftmp Where Bill_Id = m.lnBill_Id Into Cursor Bill 
    Select * from pdftmp1 Where Bill_Id = m.lnBill_Id Into Cursor Bill1 Order By Sub_Order
    ThisForm.grfStore2.OnPrint("PrintToPdf")

    *-- 是否中断导出
    If loProgress.IsCancel 
        Exit
    EndIf
EndScan

If 6 = Sy_MsgBox("文件己成功导出,是否打开文件夹查看导出结果?", 4+32+256, ThisForm)
    ShellExecute(0, "Open", JustPath(m.lcOutPath), "", "", 1)
EndIf

搜索更多相关主题的帖子: 导出 进度条 操作 Select If 
2023-04-12 11:59
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
收藏
得分:0 
双进度条我个人推荐如下,简洁明了。
超过双度条的,还是不要搞了吧,实际体验还不如把双进度条任一搞成跑马灯。

图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2023-4-12 17:37编辑过]

2023-04-12 17:33
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
收藏
得分:0 
以下是引用iswith在2023-4-13 09:14:23的发言:

是有这样的设计按“Esc”不过它不会马上响应,在长耗时它需要按下一段时间才响应,很早就有啦。。。。。



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

[此贴子已经被作者于2023-4-13 13:31编辑过]

2023-04-13 13:05
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
收藏
得分:0 
不能被中止的任务,就这么搞。

*-- 创建一个单进度对象
loProgress = NewObject("frm_progress1", "CAT_forms.vcx")     
loProgress.Caption = "正在导出 PDF 文件,请稍候..."
loProgress.Inits(1, RecCount("pdftmp"))
loProgress.btnCancel.Enabled = .F.
2023-04-13 13:07
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
收藏
得分:0 
加不加,那也是规划方面的事情了。先期默认为了效率不加,后面想了想不高兴加了个 loProgress.IsForce 这这这。。。。。
2023-04-13 15:16
快速回复:动手做一个公用进度条类,并让它可以随时中止操作
数据加载中...
 
   



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

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