| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1251 人关注过本帖, 1 人收藏
标题:动手做一个公用进度条类,并让它可以随时中止操作
只看楼主 加入收藏
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
结帖率:85.71%
收藏(1)
 问题点数:0 回复次数:15 
动手做一个公用进度条类,并让它可以随时中止操作
先看效果,在一个长耗时的操作中按下 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
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9802
专家分:26906
注 册:2012-2-5
收藏
得分:0 
向楼主学习

坚守VFP最后的阵地
2023-04-12 12:34
chenjf
Rank: 1
来 自:四川成都
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-10-18
收藏
得分:0 
学习!
2023-04-12 12:58
schtg
Rank: 12Rank: 12Rank: 12
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1546
专家分:3003
注 册:2012-2-29
收藏
得分:0 
楼主威武,谢谢!
2023-04-12 16:39
sostemp
Rank: 4
等 级:贵宾
威 望:10
帖 子:202
专家分:284
注 册:2009-6-2
收藏
得分:0 
楼主的这界面很好看,很简洁,搭配合理,大气。
2023-04-12 17:09
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
收藏
得分:0 
双进度条我个人推荐如下,简洁明了。
超过双度条的,还是不要搞了吧,实际体验还不如把双进度条任一搞成跑马灯。

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


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

2023-04-12 17:33
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:746
专家分:1114
注 册:2021-10-13
收藏
得分:0 
曾兄,这foxpro玩得是出神入化了。。。
2023-04-12 20:30
iswith
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:328
专家分:493
注 册:2013-5-14
收藏
得分:0 
是有这样的设计按“Esc”不过它不会马上响应,在长耗时它需要按下一段时间才响应,很早就有啦。。。。。
2023-04-13 09:14
倦猫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
快速回复:动手做一个公用进度条类,并让它可以随时中止操作
数据加载中...
 
   



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

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