首页 > 其他分享 >Delphi 抓图后打印这张图片,弹出打印属性框

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

时间:2023-04-27 23:33:46浏览次数:32  
标签:cbb 抓图 Text Delphi 打印 Caption grp2 lbl


如果用窗体.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




黑色头发:http://heisetoufa.iteye.com/


标签:cbb,抓图,Text,Delphi,打印,Caption,grp2,lbl
From: https://blog.51cto.com/u_2543512/6232507

相关文章

  • for循环打印菱形
    for循环打印菱形今天我们来看一个使用双重for循环打印菱形的经典题目总体来说还是要找到规律,用外层循环控制行数。内层循环控制空格和星星的数量关键是要找到需要打印多少个空格和星星#include<stdio.h>intmain(){/*我们就先写一个7行的菱形然后再写n行的菱形*/......
  • 打印空心字母金字塔
    打印空心字母金字塔今天独自做了一个这个题,简单的分享一下我的思路和代码#include<stdio.h>intmain(){////charch;////ch=getchar();////////这里我们先输出带有E行的图案//for(inti='A';i<='A';i++){//用字符来做循环条件的参数// for(intj=0;j<39;j++){//先打......
  • jeecgboot启动时日志打印所有接口,作为开发时的参考作用吧。
    主要的方式是使用了RequestMappingHandlerMapping这个bean当中保存了所有的映射、对应的controller类、方法等等的信息。在单体启动类中取出这个bean然后遍历就可以了,代码如下:/***单体启动类(采用此类启动为单体模式)*/@Slf4j@SpringBootApplicationpublicclassJeecgSyste......
  • Microsoft Print To PDF如何打印到网络地址
    正常情况下,MicrosoftPrintToPDF是仅提供本地PDF打印功能的。不过还是可以通过配置,打印到网络地址。这里需要用到文件共享功能假设我们要使用MicrosoftPrintToPDF从A电脑打印到B电脑的D:\output文件夹。操作方法如下 1、打开D:\output文件夹属性,切换到共享页,打开共享对......
  • 请用java写二叉树算法,实现添加数据形成二叉树功能,并以先序的方式打印出来....
    先转载过来以后再研究importjava.io.*;importjava.util.Stack;publicclassmyTest{privatemyTreetree;/***二叉树的插入,参数为(关键字,数据)***/publicvoidinsert(intkey,intdata......
  • Python打印一个字典,输出带双引号
    Python中dict(字典)默认的表示方式是用单引号表示键和值,例如:my_dict={'key1':'value1','key2':'value2'}print(my_dict)这将输出:{'key1':'value1','key2':'value2'}如果你想使用双引号代替单引号进行表示,可以使用json......
  • 打卡 打印点、圆、圆柱信息
    定义平面二维点类CPoint,有数据成员x坐标,y坐标,函数成员(构造函数、虚函数求面积GetArea,虚函数求体积函数GetVolume、输出点信息函数print。由CPoint类派生出圆类Cirle类(新增数据成员半径radius),函数成员(构造函数、求面积GetArea,虚函数求体积函数GetVolume、输出圆面积信息函数pr......
  • 扩展 jol 源码包 打印 Mark Word
    参考: https://blog.csdn.net/qq_38505969/article/details/1234463101、下载源码并进行方法扩展2、pom.xml<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http......
  • 打印上下三角形
    #include<iostream>usingnamespacestd;intmain(){ intn; while(cin>>n){ for(inti=1;i<=n;i++) { for(intj=1;j<=n-i;j++) { cout<<""; } for(intj=1;j<=2*i-1;j++) { cout<<"*"; } cout<<end......
  • delphi 仿一下手机端淡入淡出的信息提示框
    先看效果:设计界面也很简单: 下面这个是个From,不是Frame.把它的边框设置为none,然后position设置在父级中央或者桌面中央,看个人喜欢吧.加个label,弯角搞一搞,其他也搞得好看一点.这里推荐SC组件.然后加个计时器.这里说一下定时器的interval属性,时间越长,越显得卡顿,上面......