Delphi的ReportMachine 如何判断用户在打印对话框点了“确定”还是“取消”
最近在做打印功能时遇到问题了,ReportMachine(以下简称RM)的客户在批量打印时,在ShowPrintDialog为True的情况下,如果第1个取消了,意味着客户是想要取消打印的,但是要逐个取消很麻烦,因此我们就要判断用户点了打印机窗口里的取消“按钮”。
从属性上看,目前没有发现有用的属性,只能在事件上下文章了。原理是定义一个全局变量为False,在RM产生打印事件后变更变量的属性为True,在PrintReport过程执行后判断这个变量,如果变量还是为False说明用户最终没有打印,就可以退出了,否则就继续打印。在XE10的RM有OnBeginPrintPage事件可以判断,但D7没有这个事件,有BeforePrintBand,PrintReportEvent可以试下,我发XE10的代码给大家参考,D7的原理也一样
procedure TPubData1.RMReport1BeginPrintPage(aCanvas: TCanvas; aPrintRect: TRect;
aScaleX, aScaleY: Double);
begin
GV_PrintDoc:=True; //这个变量为True表示用户确定了打印
end;
procedure TForm_ExpressBill.ActionPrintExecute(Sender: TObject);
var
vTmp:string;
begin
inherited;
PubData1.RMReport1.ShowPrintDialog:=True; //每次打印前都要弹出打印机设置窗口
try
with QueryList do
begin
First;
while not Eof do //开始批量打印
begin
PubData1.RMReport1.LoadFromBlobField(TBlobField(QueryFormat.FieldByName('PFormat'))); //加载打印格式
PubData1.RMReport1.DoublePass:=True;
if PubData1.RMReport1.PrepareReport then //生成
begin
PubData1.RMReport1.PrintReport; //开始打印,但会先弹出打印机设置窗口
if not GV_PrintDoc then //这里是重点,这个变量判断如果用户没有点确定,没有打印就在这里退出
Break;
PubData1.RMReport1.ShowPrintDialog:=False; //既然用户选择打印第一张,后面就不用再弹出设置窗口了
end;
Next;
end;
end;
MessageDlg('快递单已经全部发送到打印机!',mtInformation,[mbOK],0);
except
on E:Exception do
begin
MessageDlg('快递单打印失败!原因是:'+#13#10+E.Message,mtWarning,[mbOK],0);
end;
end;
GV_PrintDoc:=False;
end;
Delphi的ReportMachine 如何判断用户在打印对话框点了“确定”还是“取消”相关推荐
- java检测用户是否重复登录_Java web工程判断用户是否重复登录
前几天,网上找了些朋友的资料,做了一个小功能,验证用户是否重复登录. 原理就是:每一个用户,登录前有一个验证,当第一次登录时,会把其session信息,添加到一个特定的静态变量中.当第二次登录时,验证 ...
- linux中c语言kbhit函数用法,C语言判断用户是否输入-非阻塞函数kbhit
一.基础研究 要从地址读取数据,肯定是要定义一个指针变量p,用它来实现变换地址和取值的功能.另外程序是当两个条件中的某一个出现时才停止,所以应该用while~do循环语句循环输出n和d,并用while ...
- qt判断用户是否正在使用当前应用程序
转自:https://blog.csdn.net/qq_37529442/article/details/78136917 如何在qt程序中判断当前应用程序是否被用户使用呢?我们先了解一下QAppli ...
- jquery的ajax判断用户是否被占用
jquery的ajax判断用户是否被占用 四种: 了解:jquery对象.load(url,params,function(数据){}); ★: $.get(url,params,fu ...
- java后端判断用户是否关注公众号
/*** 判断用户是否关注了公众号* @param openid* @return*/ public static boolean judgeIsFollow(String openid){int s ...
- 虚拟机Linux中判断用户输入的是 Yes 或 NO
Linux中判断用户输入的是 Yes 或 NO #!/bin/bash # 判断用户输入的是 Yes 或 NO read -p "Are you sure?[y/n]:" sure ...
- h5滚动时侧滑出现_H5触摸事件中如何判断用户滑动方向
这次给大家带来H5触摸事件中如何判断用户滑动方向,H5触摸事件中判断用户滑动方向的注意事项有哪些,下面就是实战案例,一起来看一下. 接口 TouchEvent TouchEvent 是一类描述手指在触 ...
- java判断用户是否在某一个区域登录_Java实现QQ登录和微博第三方登录
来源:http://www.cnblogs.com/liuxianan转自公众号:Java后端 1. 前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了 QQ 和微博这 2 大常 ...
- php判断是否已关注,php判断用户是否关注微信订阅号或公众号
最近要做一个微信平台的投票活动,需要在关注公众号之后才能参与投票,那么,如何判断用户是否关注了公众号呢?第一想法是,通过获取公众号的关注列表,然后搜索列表中是否有参与者的openid.但是马上发现一个 ...
- python验证用户登录的判断_python怎么判断用户是否登录?
python中判断用户是否登录的方法:def cmdbindex(req): if not request.user.is_authenticated(): return render(request ...
最新文章
- 中山学院计算机学院家长座谈会,计算机科学与技术学院举办校友座谈会
- .net framework 4中SpinLock和lock的区别
- 【转载】关于c++中的explicit
- Java Review - 并发编程_独占锁ReentrantLock原理源码剖析
- VTK:Filtering之ConnectivityFilterDemo
- Kubernetes二进制集群部署+Web管理界面+kubectl 命令管理+YAML文件详解(集合)
- c语言删除一行程序代码,删除C语言程序中所有的注释语句的实现代码
- swift 闭包的使用
- linux 修改php配置,PHP部署时的几个配置修改说明
- MVC HtmlHelper listbox用法
- 未来三年分布式光伏必然爆发
- 2014年5月第二个周末总结--保守自己的心
- pe_xscan作了3点更新 1
- 自动刷百度下拉词优化工具
- phpmyadmin linux 升级,phpMyAdmin 4.9.2发布下载,附主要更新内容介绍
- Java Graphics2D的使用
- 1月16日服务器例行维护更新公告,1月16日9—11点例行更新维护公告
- 用STM32F103C8芯片做流水灯
- 2018年南京大学计算机专业录取分数线,南京大学2018年录取分数线
- 数字电路——余3循环码