TQ_Printrer控件,是一个为方便需要控制打印命令而设计的跨平台专用控件,已包含标准ESC/POS打印控制的基本指令在内(这些基本指令已能很好的满足多数项目使用)。

TQ_Printrer控件让开发人员在开发跨平台项目相关打印控制时更加方便快捷。控件支持Android、iOS以及WIN32/64的开发,可控制兼容ESC/POS的小票打印机。目前控件已在多个Android、iOS项目中配合蓝牙小票打印机使用。

控件下载地址:

Delphi 10 Seattle小票打印控件

 一、控件安装

1、在Delphi 10 Seattle开发环境打开控件目录下print.dpk文件(XE8下请使用print_XE8.dpk文件)。在项目管理器中选择WIN32。

2、右键单击项目,在弹出菜单中选择“install”,安装控件。

弹出下图说明安装成功(路径会不同)。

3、在项目中配置控件引用路径:

打开或新建项目,打开菜单project,找到Option,在目标平台中选择“All CConfiguations - All platforms”,将路径添加到Delphi Compiler->SearchPath中。如下两图:

使用你控件放置的路径,绝对目录\TQ_Printer\DCU\FMX\D10\$(Platform)\Release,这点很重要。(XE8安装时请把D10改为XE8)

 二、了解控件

新建一个项目,在Tool Palette 中选择TQ_Printer控件,并将其放置到窗体设计器。切换到Object Inspector,点击ReadMe属性后面的[…]按钮,可以查看控件说明。如下图:

说明后半部分给出了使用的代码样例。

以下是控件使用说明:

Pinit 初始化打印设置。

CR 换行控制

FontSize(X,Y:Integer) 设置字体大小,x,y分别为字体高宽放大倍数;

取值1时为正常大小,最大取值为8。

如:FontSize(2,2)为高宽放大2倍。

Align(TAlign)  排版设置,分别为居中(TAlign.Center)、居左(TAlign.Left)、居右(TAlign.Right)

如:Align(TAlign.Center),设置居中打印。

Crude(Boolean) 为True时使用加粗模式,为False则关闭加粗模式。

如:Crude(True)使用加粗模式, Crude(True)关闭加粗模式。

Crude(string) 参数为字符串时,自动为该字符串设置为加粗模式,并关闭加粗模式。

如:Crude('使用加粗模式')。

Double(Boolean) 为True时使用双重打印模式,为False则关闭双重打印模式。

如:Double(True)使用双重打印模式, Double(True)关闭双重打印模式。

Double(string) 参数为字符串时,自动为该字符串设置为双重打印模式,并关闭双重打印模式。

如:Double('使用双重打印模式')。

Rotate(Boolean) 为True时顺时针旋转90度打印,为False则关闭顺时针旋转90度打印。

如:Rotate(True)使用顺时针旋转90度打印, Rotate(True)关闭顺时针旋转90度打印。

Rotate(String) 参数为字符串时,自动为该字符串设置为顺时针旋转90度打印,并关闭顺时针旋转90度打印。

如:Rotate('顺时针旋转90度打印')。

Rotate_180()、Rotate_270()使用方式同上。区别在于顺时针旋转度数不同。(请注意,某些打印机并不支持。)

Underline(Integer) 使用下划线,分另为取消下划线(0)、1点下划线(1)、2点下划线(2)

如:Underline(0)取消下划线。

Underline(String,Integer) 参数为字符串时,自动为该字符串设置为下划线模式,并关闭下划线模式。

如:Underline('2点下划线',2)

LineSpacing(Integer) 设置行间距,为0时使用默认行间距,取值0-255.

如:LineSpacing(30),设置为30个打印点的行间距。

WordSpacing(Integer) 设置字间距,0为默认字间距,取值0-255.

如:WordSpacing(3),设置为3个打印点的字间距。

PrintLU(Integer) 打印并走纸N行,将打印缓冲区中的数据,并进纸N字符行。

如:PrintLU(1),将打印并进纸1行。

PrintJU(Integer) 打印并走纸N点,将打印缓冲区中的数据,并进纸N打印点。

如:PrintJU(1),将打印并进纸1点。

StringToByteS(Data: String; charset:String)将字符串转换为Bytes,供打印机使用。

如:StringToByteS(PrintData, 'GB2312')

以下为样例代码(也可通过TQ_Printer1.Print_Test 取出样例数据,或直接将样例数据发送到打印机测试打印效果。):

function Print_Test: string;

var

P:TTQ_Printer;  //代码看上去会短很多  看下面事例

ToTEST:string;

begin

ToTEST:=P.Pinit  //初始化打印机设置

+P.Align(TAlign.Center) + P.FontSize(1,1) + '正常居中' + P.CR

+P.FontSize(2,1) + '2倍高居中' + P.CR     //不用每行定义居中

+P.FontSize(1,2) + '2倍宽居中' + P.CR

+P.FontSize(2,2) + '2倍高宽居中' + P.CR

+P.Align(TAlign.Left) + P.FontSize(1,1) + '正常居左' + P.CR

+P.FontSize(2,1) + '2倍高居左' + P.CR

+P.FontSize(1,2) + '2倍宽居左' + P.CR

+P.FontSize(2,2) + '2倍高宽居左' + P.CR

+P.FontSize(1,1)  //返回正常大小

+P.Crude('使用加粗模式') + P.CR

+P.Double('使用双重打印模式') + P.CR

+P.Rotate('顺时针旋转90度打印') + P.CR

+P.Underline('2点下划线   空格没有线',2) +P.CR

+P.Underline('1点下划线   空格没有线',1) +P.CR

+P.Underline(0) + '取消下划线以下正常行间距' + P.CR

+P.LineSpacing(5) + '以下5行间距' + P.CR

+P.LineSpacing(10) + '以下10行间距' + P.CR

+P.LineSpacing(20) + '以下20行间距' + P.CR

+P.LineSpacing(40) + '以下40行间距' + P.CR

+P.LineSpacing(60) + '以下60行间距' + P.CR

+P.LineSpacing(0) + '以下默认行间距' + P.CR

+P.WordSpacing(5) + '以下5点字间距' + P.CR

+P.WordSpacing(5) + '以下10点字间距' + P.CR

+P.WordSpacing(0) + '以下默认字间距' + P.CR

+'测试完成' + P.CR

+P.PrintLU(1); // 结束打印走纸一行

result:= ToTEST;

end;

(通过TQ_Printer1.Note.Text,可取出详细说明内容。)

三、使用控件

别看说明写了一大堆,使用起来那是非常的简单方便。首先,项目需要能连接到打印机并能执行打印任务。

我的打印代码如下:

procedure TFormMain.Button1Click(Sender:TObject);

var

P:TTQ_Printer;  //也可直接使用TQ_Printer1

ToTEST, ToPrint:string;

begin

{打印控制参数样例数据_Begin}

ToTEST:=TQ_Printer1.Print_Test; // 取打印样例数据

{打印控制参数样例数据_End}

{组织打印数据_Begin}

ToPrint := P.Pinit + p.FontSize(2,2) + P.Align(TAlign.Center) + '小票标题' + P.CR

+P.FontSize(1,1) + P.Align(TAlign.Left)

+'--------------------------------' + P.CR

+ '单号:12352421423134122'+ P.CR

+'时间:2015年01月01日' + P.CR

+'往来单位:'

+P.Underline('XXXXXXXXXXXXX',2) + P.CR

+'  商品名    单位    价格' + P.CR

+'加多宝       瓶     10.00' + P.CR

+'多加宝       瓶     10.00' + P.CR

+'宝加多       瓶     11.00' + P.CR

+'--------------------------------' + P.CR

+'合计:31.00元' + P.CR

+P.PrintLU(1); // 结束打印

{组织打印数据_End}

//调用打印

Print_Data(ToPrint);

// Print_Data(ToTEST);  //打印样例数据使用。

// print_Data为我的打印过程,这里将数据发送到打印机,某些打印需要转换为ByteS数据后使用,可使用StringToByteS函数。

//如: Print_Data(P.StringToByteS(ToTEST,'GB2312'));

end;

四、打印效果

以下是iOS与Android开发的APP下使用蓝牙小票打印机打印的实测效果。

以下是使用商米V1手持设备打印效果测试(虚拟蓝牙打印):

Delphi 10 Seattle 小票打印控件TQ_Printer的更多相关文章

  1. 修改Delphi 10.1.2 edit控件在android的复制、剪切和粘贴样式

    Delphi 10.1.2 edit控件在android默认的复制.剪切和粘贴样式太丑,经悟能-DelphiTeacher的提示,用最简单的代码修改后稍有改观. 默认的样式: 修改后的样式: 修改FM ...

  2. delphi 10 seattle 安卓服务开发(一)

    从delphi 开始支持安卓的开发开始, 安卓service 开发一直都是delphier 绕不过去的坎, 以前也有开发service  的方法,但是都是手工处理启动文件,而且要修改很多东西,基本上成 ...

  3. delphi 10 Seattle 第一个Android程序

    delphi 10 Seattle 第一个Android程序 1.打开Delphi RAD Studio Seattle,如下图     2.选择black application 点击OK   3. ...

  4. winform 对话框,保存,另存为,还有打印控件

    学习的对话框的种类: 1.打开文件对话框(OpenFileDialog) 2.保存文件对话框(SaveFileDialog) 3.字体对话框(FontDialog) 4.颜色对话框(ColorDial ...

  5. [2014.01.27]wfPrintOcx 票据打印控件 v5.3

    支持选择打印机,并自动记忆选择的打印机. 适合打印各类票据格式. 支持画正方形.长方形.圆形.椭圆.横线.竖线.HTTP图片. 支持数字金额转换成中文大写金额. 可以设置固定宽度的文字自动换行. 组件 ...

  6. 网页WEB打印控件制作-开放源码

    在WEB系统中,打印的确是比较烦人的问题,如果我们能制作一个属于自己的自定义的打印插件,那么我们在后续自定义打印的时候能随心所欲的控制打印,这样的效果对于程序员来说是非常开心的一件事件,本文将自己开发 ...

  7. Windows 打印控件

    Windows窗体的PrintDocument组件用于设置一些属性,这些属性说明,在基于Windows的应用程序中要打印说明内容以及打印文档的能力,可将它与PrintDialog组件一起使用来控制文档 ...

  8. Web打印控件smsx.cab使用说明

    在项目开发中,经常会用到页面打印的功能,在ASP.NET环境下推荐一款web打印控件smsx.cab.    使用方法:一般会先定义一个用于打印的母版页(Print.Master),在母版页上做好布局 ...

  9. Lodop打印控件传入css样式、看是否传入正确样式

    Lodop中可以传入页面存在的css样式,也可以是拼接后的新样式,例如本博客的其他博文:Lodop打印如何隐藏table某一列 需要打印的页面,样式不一定都是行内样式,style样式单独写在页面上,或 ...

随机推荐

  1. CI框架 -- 驱动器

    驱动器目录及文件结构 下面是驱动器目录和文件结构布局的简单例子: /application/libraries/Driver_name Driver_name.php //驱动器名称 drivers ...

  2. 大数据抓取采集框架(摘抄至http://blog.jobbole.com/46673/)

    摘抄至http://blog.jobbole.com/46673/ 随着BIG DATA大数据概念逐渐升温,如何搭建一个能够采集海量数据的架构体系摆在大家眼前.如何能够做到所见即所得的无阻拦式采集.如 ...

  3. Juno 版 Keystone 主配置文件 keystone.conf 详解

    本文全面解读Icehouse发行版keystone的配置文件keystone.conf,由于从keystone提供的服务或依赖的基础设施角度入手,因此[DEFAULT]部分可能被拆分到很多子块中. 关 ...

  4. zabbix 配置SNMP监控

    什么是SNMP? 简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol).数据库模型(database schema)和一组 ...

  5. HTML5视频破碎重组特效 强大视觉冲击

    HTML5视频播放器很多,但是HTML5视频特效还是很少见的,这款HTML5视频破碎重组特效非常刺激,给人强大的视觉冲击.点击视频任意地方,HTML5将会将这些区域击碎,过一段时间,这些被击碎的视频碎 ...

  6. 腾讯大渝网(esf.cq.qq.com)任意手机注册+短信验证码泄露

    地址在这里:http://esf.cq.qq.com/c=register 直接返回短信验证码, data: {data:您的手机验证码为8453,2小时内有效., auth_code:8453}ti ...

  7. LoadRunner 使用介绍

    功能介绍 安装流程 LoadRunner是一款测试系统行为和性能的负债测试工具,通过模拟上千万用户实施并发复杂以实时性能监控的方式来确认和查找问题.它是一款付费商业软件,开发商为HP,个人开发者可以使 ...

  8. mac osx voice over的使用

    mac下的filezilla是一个很奇葩的应用,奇葩在哪?有一次我不知道怎么操作的,把filezilla搬到到了窗体顶部,结果被mac的菜单栏挡住了标题栏,然后再也无法移动窗体了,以下是我为了移动它做 ...

  9. 使用vi时提示 write error in swap file

    今天使用vi 命令时,提示write error in swap file 查了下原因,磁盘空间不够 df -h 使用 rm -rf 文件名 ,删除不用的 使用 echo "" & ...

  10. POJ 3273 Monthly Expense(二分搜索)

    Description Farmer John is an astounding accounting wizard and has realized he might run out of mone ...