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. e864. 取的显示器大小尺寸

    See also e670 缓冲图像转换为图像. try { Robot robot = new Robot(); // Capture a particular area on the screen ...

  2. unity提高----------射线使用【unity3d 怎样获得当前鼠标点击的对象】

    unity3d 怎样获得当前鼠标点击的对象 最佳答案   var ray = Camera.main.ScreenPointToRay (Input.mousePosition);var hit : ...

  3. Android Notification和权限机制探讨

    近期为了在部门内做一次小型的技术分享.深入了解了一下Notification的实现原理.以及android的权限机制.在此做个记录.文章可能比較长,没耐心的话就直接看题纲吧. 先看一下以下两张图 图一 ...

  4. Elasticsearch5.2.2安装

    安装环境: 操作系统:centos 6.8 jdk版本:jdk1.8.0_121 应用版本:Elasticsearch 5.2.2 1.Elasticsearch5.2.2安装 (1)下载地址: wg ...

  5. C# 各种输入格式验证#各种输入格式验证

    /// <summary> /// 各种输入格式验证 /// </summary> public class ValidateUtil { private static Reg ...

  6. Java常用系统变量收集

    public static void main(String[] args) { System.out.println("java版本号:" + System.getPropert ...

  7. jQuery实现一个淡入淡出下拉菜单 非常简易

    前段时间我一直在向大家推荐CSS3和HTML5的东西,尽管看上去很炫,但也有不少网友抱怨兼容性问题,所以今天开始我也会陆续向大家介绍一些兼容性较好的jQuery插件.今天先分享一款利用jQuery实现 ...

  8. vue form表单绑定事件与方法

    使用v-on绑定事件 <button @click="hello">Hello</button><br /> <button @click ...

  9. struts实现国际化

    上篇博客学习了Java国际化的一些基础知识,了解了这些知识之后,我们可以更好的过度到struts国际化. 本篇博客主要学习struts国际化的实现: 1.配置环境设置baseName. 在struts ...

  10. mac osx voice over的使用

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