• Delphi 10 Seattle 小票打印控件TQ_Printer


    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_PrinterDCUFMXD10$(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手持设备打印效果测试(虚拟蓝牙打印):

  • 相关阅读:
    js 剪切板应用clipboardData
    正则表达式的与或非
    自定义类型转换器
    struts2类库下载
    通过ajax提交form表单
    面试官:为什么Mysql中Innodb的索引结构采取B+树?
    代码生成器:IDEA 强大的 Live Templates
    深入理解JVM,7种垃圾收集器,看完我跪了
    你能说出多线程中sleep、yield、join的用法及sleep与wait区别?
    Java8中一个极其强悍的新特性,很多人没用过(非常实用)
  • 原文地址:https://www.cnblogs.com/karkash/p/9759664.html
Copyright © 2020-2023  润新知