Delphi 抓图后打印这张图片,弹出打印属性框


本文整理自网络,侵删。

 如果用窗体.print打印的话,会导致一些控件打印不出来,比如下拉列表,还有打印TChart也会导致只打印TChart的原始状态,而不会打印有数据的TChart 

所以我就想到了先抓图,后打印

抓图后下拉列表和TChart都正常显示了,可是还有一点不好,就是下拉列表中的值是显示不到的,但Label可以显示,所以可以在打印的时候把下拉列表的值换成Label来显示

代码:


procedure TFrmLltj.Button1Click(Sender: TObject);
var
FormImage: TBitmap;
MyImage:TImage;
r1:TRect;
begin //52
grp2_lbl_lk.Caption := cbb_xzlk.Text; //选择的路口赋

grp2_lbl_qs_n.Caption := cbb_qs_n.Text + ' 年'; //选择的年
grp2_lbl_qs_y.Caption := cbb_qs_y.Text + ' 月'; //选择的月
grp2_lbl_qs_r.Caption := cbb_qs_r.Text + ' 日'; //选择的日
grp2_lbl_qs_s.Caption := cbb_qs_s.Text + ' 时'; //选择的时
grp2_lbl_qs_f.Caption := cbb_qs_f.Text + ' 分'; //选择的分

grp2_lbl_js_n.Caption := cbb_js_n.Text + ' 年'; //选择的年
grp2_lbl_js_y.Caption := cbb_js_y.Text + ' 月'; //选择的月
grp2_lbl_js_r.Caption := cbb_js_r.Text + ' 日'; //选择的日
grp2_lbl_js_s.Caption := cbb_js_s.Text + ' 时'; //选择的时
grp2_lbl_js_f.Caption := cbb_js_f.Text + ' 分'; //选择的分

GroupBox1.Visible := False; //打印起始时隐藏GroupBox1

FormImage := GetFormImage; //抓图
MyImage := TImage.Create(nil); //

try //53
Clipboard.Assign(FormImage);
MyImage.Picture.Assign(Clipboard);

r1:=Rect(50,50,1500,1500); //设置x坐标,y坐标,横大小,竖大小
if printdialog1.execute then //弹出打印属性框
begin //54
printer.begindoc; //开始打印
Printer.Canvas.StretchDraw(r1,MyImage.Picture.Graphic); //打印中
//Printer.Canvas.draw(0,0,MyImage.Picture.Bitmap);
printer.enddoc; //结束打印
end; //54

//MyImage.Picture.SaveToFile('D:/temp.bmp');
finally
begin //55
MyImage.Free; //释放资源
FormImage.Free;//释放资源
GroupBox1.Visible := True; //打印结束后显示GroupBox1
end; //55
end; //53
end; //52

相关阅读 >>

Delphi动态创建tadoquery加access出现'不正常的定义参数对象 提供了不一致或不完整的信息'错误

Delphi10 一段汇编程序

Delphi 中文大写日期转换函数

Delphi2010下安装控件Delphi

Delphi iddecodermime 对图像编码base64解码成图像文件

Delphi string.parse

Delphi分享pos函数。(比fastpos还要快)

Delphi 一行一行读取txt文件

重新组织编写Delphi的md2、md4、md5类

Delphi adoquery查询,如何得到查询记录数?

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...