Delphi 10 Seattle 小票打印控件TQ_Printer
TQ_Printrer控件,是一个为方便需要控制打印命令而设计的跨平台专用控件,已包含标准ESC/POS打印控制的基本指令在内(这些基本指令已能很好的满足多数项目使用)。
TQ_Printrer控件让开发人员在开发跨平台项目相关打印控制时更加方便快捷。控件支持Android、iOS以及WIN32/64的开发,可控制兼容ESC/POS的小票打印机。目前控件已在多个Android、iOS项目中配合蓝牙小票打印机使用。
控件下载地址:
一、控件安装
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的更多相关文章
- 修改Delphi 10.1.2 edit控件在android的复制、剪切和粘贴样式
Delphi 10.1.2 edit控件在android默认的复制.剪切和粘贴样式太丑,经悟能-DelphiTeacher的提示,用最简单的代码修改后稍有改观. 默认的样式: 修改后的样式: 修改FM ...
- delphi 10 seattle 安卓服务开发(一)
从delphi 开始支持安卓的开发开始, 安卓service 开发一直都是delphier 绕不过去的坎, 以前也有开发service 的方法,但是都是手工处理启动文件,而且要修改很多东西,基本上成 ...
- delphi 10 Seattle 第一个Android程序
delphi 10 Seattle 第一个Android程序 1.打开Delphi RAD Studio Seattle,如下图 2.选择black application 点击OK 3. ...
- winform 对话框,保存,另存为,还有打印控件
学习的对话框的种类: 1.打开文件对话框(OpenFileDialog) 2.保存文件对话框(SaveFileDialog) 3.字体对话框(FontDialog) 4.颜色对话框(ColorDial ...
- [2014.01.27]wfPrintOcx 票据打印控件 v5.3
支持选择打印机,并自动记忆选择的打印机. 适合打印各类票据格式. 支持画正方形.长方形.圆形.椭圆.横线.竖线.HTTP图片. 支持数字金额转换成中文大写金额. 可以设置固定宽度的文字自动换行. 组件 ...
- 网页WEB打印控件制作-开放源码
在WEB系统中,打印的确是比较烦人的问题,如果我们能制作一个属于自己的自定义的打印插件,那么我们在后续自定义打印的时候能随心所欲的控制打印,这样的效果对于程序员来说是非常开心的一件事件,本文将自己开发 ...
- Windows 打印控件
Windows窗体的PrintDocument组件用于设置一些属性,这些属性说明,在基于Windows的应用程序中要打印说明内容以及打印文档的能力,可将它与PrintDialog组件一起使用来控制文档 ...
- Web打印控件smsx.cab使用说明
在项目开发中,经常会用到页面打印的功能,在ASP.NET环境下推荐一款web打印控件smsx.cab. 使用方法:一般会先定义一个用于打印的母版页(Print.Master),在母版页上做好布局 ...
- Lodop打印控件传入css样式、看是否传入正确样式
Lodop中可以传入页面存在的css样式,也可以是拼接后的新样式,例如本博客的其他博文:Lodop打印如何隐藏table某一列 需要打印的页面,样式不一定都是行内样式,style样式单独写在页面上,或 ...
随机推荐
- e864. 取的显示器大小尺寸
See also e670 缓冲图像转换为图像. try { Robot robot = new Robot(); // Capture a particular area on the screen ...
- unity提高----------射线使用【unity3d 怎样获得当前鼠标点击的对象】
unity3d 怎样获得当前鼠标点击的对象 最佳答案 var ray = Camera.main.ScreenPointToRay (Input.mousePosition);var hit : ...
- Android Notification和权限机制探讨
近期为了在部门内做一次小型的技术分享.深入了解了一下Notification的实现原理.以及android的权限机制.在此做个记录.文章可能比較长,没耐心的话就直接看题纲吧. 先看一下以下两张图 图一 ...
- Elasticsearch5.2.2安装
安装环境: 操作系统:centos 6.8 jdk版本:jdk1.8.0_121 应用版本:Elasticsearch 5.2.2 1.Elasticsearch5.2.2安装 (1)下载地址: wg ...
- C# 各种输入格式验证#各种输入格式验证
/// <summary> /// 各种输入格式验证 /// </summary> public class ValidateUtil { private static Reg ...
- Java常用系统变量收集
public static void main(String[] args) { System.out.println("java版本号:" + System.getPropert ...
- jQuery实现一个淡入淡出下拉菜单 非常简易
前段时间我一直在向大家推荐CSS3和HTML5的东西,尽管看上去很炫,但也有不少网友抱怨兼容性问题,所以今天开始我也会陆续向大家介绍一些兼容性较好的jQuery插件.今天先分享一款利用jQuery实现 ...
- vue form表单绑定事件与方法
使用v-on绑定事件 <button @click="hello">Hello</button><br /> <button @click ...
- struts实现国际化
上篇博客学习了Java国际化的一些基础知识,了解了这些知识之后,我们可以更好的过度到struts国际化. 本篇博客主要学习struts国际化的实现: 1.配置环境设置baseName. 在struts ...
- mac osx voice over的使用
mac下的filezilla是一个很奇葩的应用,奇葩在哪?有一次我不知道怎么操作的,把filezilla搬到到了窗体顶部,结果被mac的菜单栏挡住了标题栏,然后再也无法移动窗体了,以下是我为了移动它做 ...