如何通过单击按钮将其打印在一张纸上[关闭]

2023-12-28

我正在寻找使用按钮打印页面的解决方案OnClick event.

让我举一个例子:

带按钮OnClick事件时,代码将随机地将某些图像彼此相邻放置。每次点击时,我都希望将这些图片(相同或不同的按钮)打印在一张纸上。

我尝试在工具栏中搜索与 Delphi 和打印机的任何连接,但没有成功。


原则上,使用Delphi打印是非常容易的。您基本上可以像使用 VCL(即使用 Windows GDI)在屏幕画布上绘图一样在页面画布上绘图。

这是一个非常简单的例子:

procedure PrintRects;
const
  Offset = 100;
  RectCountY = 8;
  RectCountX = 4;
var
  S: string;
  TitleRect: TRect;
  MainRect: TRect;
  j: Integer;
  i: Integer;
  RectWidth,
  RectHeight: Integer;
  R: TRect;

  function GetRectRect(X, Y: Integer): TRect;
  begin
    Result := Rect(
      MainRect.Left + X * RectWidth,
      MainRect.Top + Y * RectHeight,
      MainRect.Left + (X + 1) * RectWidth,
      MainRect.Top + (Y + 1) * RectHeight
    );
  end;

begin

  with TPrintDialog.Create(nil) do
    try
      if not Execute then
        Exit;
    finally
      Free;
    end;


  Printer.BeginDoc;
  try

    Printer.Canvas.Font.Size := 42;
    S := 'My Collection of Rects';

    TitleRect := Rect(
      Offset,
      Offset,
      Printer.PageWidth - Offset,
      Offset + 2 * Printer.Canvas.TextHeight(S)
    );

    MainRect := Rect(
      Offset,
      TitleRect.Bottom + Offset,
      Printer.PageWidth - Offset,
      Printer.PageHeight - Offset
    );

    RectWidth := MainRect.Width div RectCountX;
    RectHeight := MainRect.Height div RectCountY;

    Printer.Canvas.TextRect(TitleRect, S, [tfSingleLine, tfCenter, tfVerticalCenter]);

    for j := 0 to RectCountY - 1 do
      for i := 0 to RectCountX - 1 do
      begin
        R := GetRectRect(i, j);
        Printer.Canvas.Brush.Color := RGB(Random(255), Random(255), Random(255));
        Printer.Canvas.FillRect(R);
      end;

  finally
    Printer.EndDoc;
  end;

end;

这会产生以下页面:

不用说,您可以在此网格中打印图像,而不是纯色矩形。

因此,如果您知道如何在表单上绘制内容(使用TCanvas,即Windows GDI),您可以使用相同的方法在打印页面上绘图。

当然,您可以在单击按钮时调用此过程:

procedure TForm1.Button1Click(Sender: TObject);
begin
  PrintRects;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过单击按钮将其打印在一张纸上[关闭] 的相关文章

  • 从不同的形式调用过程

    我正在使用 Lazarus 我有一个名为TForm1单元名称为 Unit 1 在这里我有一个名为mergeDATfile a shortint 这会产生一些东西 顺便说一句 我必须创建另一个名为TForm2里面有按钮 Button1 当它被
  • 在 ADO 查询 (mysql/MyConnector) 中使用参数

    今天我下载并安装了 MyConnector 这样我就可以通过 ADO 使用 Mysql 一切都安装好了 我可以与 ODBC 连接并从我的 delphi 环境进行连接 当我在运行时构建查询时 我收到一条错误消息 项目 Project1 exe
  • Python Flask 不更新图像[重复]

    这个问题在这里已经有答案了 这里有一些关于图像的 Flask 问题 但没有一个能解决我的问题 我有一个应用程序可以创建图像 保存它 然后显示它 一次 它应该多次执行此操作 每次更改图像时 它应该加载新图像 它不是 它只显示与其显示的文件名关
  • 代码如何从 Android Gallery 加载图像

    我有用于从图库加载图像的代码 但我真的不明白它是如何工作的 这是代码 Override protected void onActivityResult int requestCode int resultCode Intent data s
  • 有没有办法将图像异步加载到用户缓存?

    我有一份物品清单 它们每个都是一个带有名称的正方形 当用户将鼠标悬停在正方形上时 将显示一个图像 这是由 jQuery 完成的 代码是这样的 square hover function var link this attr title th
  • 从 Web 打印“原始文本”(ZPL)

    我们有很多旧的 ZPL 标签 我们希望能够从网络客户端打印它们 打印机连接到客户端而不是服务器 我们有一些想法 从 Silverlight 打印 不可行 似乎无法在不调用 COM 对象的情况下从 NET 打印 原始 到 Zebra 而这在普
  • 在该对象调用的事件期间销毁该对象

    我有一个按钮 它的 OnClick 事件调用一个销毁按钮的过程 但随后 线程 想要返回到 OnClick 事件 并且我遇到了访问冲突 我完全被难住了 您需要在按钮的所有代码执行完毕后销毁该按钮 执行此操作的标准方法是将用户定义的消息发布到表
  • 将固定文档/XPS 打印为 PDF,而不显示文件保存对话框

    我有一个FixedDocument我允许用户在 WPF GUI 中预览 然后打印到纸张上 而不显示任何 Windows 打印对话框 如下所示 private void Print PrintQueueCollection printQueu
  • 如何在启用抗锯齿的情况下旋转可绘制对象

    我需要将 ImageView 旋转几度 我通过子类化 ImageView 和重载来做到这一点onDraw Override protected void onDraw Canvas canvas canvas save canvas sca
  • 我自己的而不是从其他网站借用的图像的正确 img src 是什么?

    在我的计算机上 保存 css 和 html 文件的文件夹还包含一些我想要插入到 html 中的图像 如果我从其他网站借用图像 我知道如何获取图像的 URL 如何获取文件夹中但尚未出现在互联网上的图像的 URL 我是否必须将图像上传到其他网站
  • 为什么不提高EInvalidPointer?

    德尔福文档状态 http docwiki embarcadero com Libraries en System SysUtils EInvalidPointer 切勿提出E无效指针直接异常 E无效指针由内存管理器内部引发 我正在编写一个自
  • 如何在 Linux 中向热敏打印机发送 ESC/POS 命令

    我正在尝试在热敏打印机上发送 ESC POS 命令 但每当我发送它们时 热敏打印机都会将它们打印为文本 而不是作为命令执行它们 我在 prn 文件中编写这些命令 每当我执行 lp 命令来打印文件时 这些 prn 文件也会被打印 但作为文本
  • delphi专家中的第三方依赖

    我正在编写一个delphi ide Expert 带有一些第三方依赖项 视觉控件 我的问题是当这个专家将安装在目标机器上时 这台电脑是否也需要安装这些第三方组件 或者组件是embeded在生成的 bpl 内部 它们将依赖于您放置在包的 re
  • 如何使用 WebAPI 处理图像

    问题 将图像发布 获取到我的服务有哪些不同的方法 我想我可以在 JSON 中使用 Base 64 文本 也可以保持原生二进制形式 我的理解是 通过将图像转换为文本 包大小会显着增加 如果我发送图像 从 Web 表单 从本机客户端 从另一个服
  • 如何在C#中使用saveFileDialog保存图像? [复制]

    这个问题在这里已经有答案了 可能的重复 使用 savefiledialog 保存图像时出现问题 https stackoverflow com questions 11053398 issue while saving image usin
  • 是否可以在通过表单上传本地图像之前预览它们?

    更具体地说 我想使用一种带有一个或多个用于图像的文件输入字段的表单 当这些字段发生更改时 我想在将数据发送到服务器之前显示关联图像的预览 我尝试过多种 JavaScript 方法 但总是遇到安全错误 我不介意使用 java 或 flash
  • 如何在SQL Server数据库表列中存储图像[重复]

    这个问题在这里已经有答案了 我有一张名为FEMALE在我的数据库中 它有ID as Primary Key 它有一个Image column 我的问题是如何使用 SQL 查询存储图像 尝试一下 insert into tableName I
  • 我的 Delphi 11.1 调试器在 x64 项目上突然变得非常缓慢;大约一周前还可以。有什么想法吗?

    更新 拔掉网络 电缆和wifi 会导致 几乎 恢复正常的调试速度 已尝试禁用防火墙没有任何变化 但没有网络恢复正常服务 更新 2 所有 Windows x64 版本都存在缓慢问题 而不仅仅是单个大型项目 如果我构建并调试 32 位 Wind
  • 设置缩略图内容类型

    我需要设置Content Type对于缩略图 我已经尝试如下所示 但它不起作用 仍然 它存储为流 天青功能 索引 json var Jimp require jimp module exports context myBlob gt Rea
  • 如何移动图像(动画)?

    我正在尝试在 x 轴上移动船 还没有键盘 我如何将运动 动画与boat png而不是任何其他图像 public class Mama extends Applet implements Runnable int width height i

随机推荐