动手做一个公用进度条类,并让它可以随时中止操作
先看效果,在一个长耗时的操作中按下 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