项目中遇到,要蓝牙针式打印机,用手机打印表单。感谢专家,对厂家提供的SDK进行了封装,实现利用Delphi开发出这一功能。

现在来看看,如何利用这一控件实现打印过程:

    procedure startScanDevices;
procedure stopScanDevices;
function getScanedDevices: TList<TCCFujitsuPrinterDevice>;
function openConnection(ADevice: TCCFujitsuPrinterDevice): Integer;
procedure printPDFPaper(pdfPath: String; sX: Integer; mode: Integer);

TCCFujitsuPrinter提供了上面几个方法,利用startScanDevices扫描蓝牙打印机,

property Devices: TList<TCCFujitsuPrinterDevice> read FDevices;

然后我们用stopScanDevices停止扫描,调用getScanDevices,将扫描到的设备存到Devices。

接下来就是利用openConnection联接打印机,成功返回1,然后调用printPDFPaper进行打印。

下面,是实际项目中的查询打印机的代码,利用kbmMW Scheduler实现。

procedure TPrintFrame.ScanPrinter;
begin if IsConnectPrinter=1 then
Exit;
AniIndicator1.Visible:=True;
AniIndicator1.Enabled:=True;
Printer.startScanDevices;//查找打印机
Scheduler.Schedule(
procedure (const AScheduledEvent:IkbmMWScheduledEvent)
var
i:Integer;
begin
CCButton1.Text:='正在查找打印机...';
Printer.getScanedDevices;//取得扫到的设备
for I := 0 to Printer.Devices.Count-1 do
begin
if (Printer.Devices[i].DeviceName='蓝牙打印机') and (Printer.Devices[i].Paired) then//如果找到指定的打印机并已经配对,中止扫描并返回设备号
begin
DeviceIndex:=i;
printer.stopScanDevices;
IsConnectPrinter:=printer.openConnection(Printer.Devices[i]);
sleep(500); AniIndicator1.Visible:=False;
AniIndicator1.Enabled:=False; CCButton1.Text:='开始打印';
AScheduledEvent.Activate(False);//中止线程
Break;
end;
end;
end)
.Synchronized//主线程中执行
.NamedAs('ScanPrinter')
.EverySecond(2)//每两秒检查一次扫到的设备
.Activate;
end;

找到了打印机,就可以实现打印了:

procedure TPrintFrame.CCButton1Click(Sender: TObject);
begin if DeviceIndex=- then//没找到打印机直接返回
Exit; if IsConnectPrinter<> then//没联接打印机则执行联接打印机
IsConnectPrinter:=Printer.openConnection(Printer.Devices[DeviceIndex]); Scheduler.Run(procedure
begin
Printer.printPDFPaper(FInfo.Data['FileName'].AsString,,);
end)
.Activate; end;

上面代码,同样利用kbmMW Scheduler实现在线程中打印。

最后,代码实现完成,发布时要带几个SO文件:

这个控件在即将发布的新版本中集成,如果项目中有需要,可以联系作者购买。

开发的过程中遇到一个问题,就是必须在Release下才能正常打印!

ChinaCock打印控件介绍-TCCFujitsuPrinter实现蓝牙针式打印的更多相关文章

  1. ChinaCock界面控件介绍-CCLoadingIndicator

    这是一个显示等待状态的控件,当在线程中执行一个稍长时间的任务,需要显示一个等待过程,免得让用户不知app在做什么?避免用户寂寞. 先看看这个控件的属性说明: BackgroundTransparenc ...

  2. ChinaCock界面控件介绍-TCCYearMonthSelector

    Delphi原生控件支持日期的选择,但对于只选择年月的情况,则没有好的实现.TCCYearMonthSelector正是为解决这个问题而产生的.看看运行效果图: 用法一如即往的简单,这是一个不可视控件 ...

  3. ChinaCock界面控件介绍-TCCImageViewerForm

    有多个图片,左右滑动可以切换,通过手势还可以放大.缩小查看,象常见的相册,就是这样子实现效果. 现在,我们有了TCCImageViewerForm组件,也可以轻松实现这样的场景应用. 现在看看TCCI ...

  4. ChinaCock界面控件介绍-CCButton

    即将发布的ChinaCock新版本,将带来一个CCButton控件,实现可视按钮.Delphi原生的Button,在上面滑动后,当释放手指时会误触发OnClick事件,这不是我们想要的结果,CCBut ...

  5. ChinaCock界面控件介绍-CCSystemBar

    Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体验.而A ...

  6. ChinaCock界面控件介绍-CCNavigateTitle

    先看一下实际项目中的运行效果,如图,通过品牌的导航栏,显示不同品牌的商品列表. 完全基于ChinaCock控件包中CCNavigateTitle组件实现的,这是一个可视控件,从组件面板上拖放一个到Fo ...

  7. ChinaCock界面控件介绍-TCCBarcodeCreator

    条码生成器,可以生成各种条码,包括二维码.这是一个不可视控件.用起来依旧简单. 属性说明: BarCodeColor:生成条码的颜色 BarcodeFormat:生成条码的类型,支持的条码类型: Bo ...

  8. ChinaCock界面控件介绍-CCGridPictureEditor

    CCGridPictureEditor如其名,网格图片编辑控件,实现利用一个网格来显示多张图片的缩略图,这是一个非常实用的控件,实现类似微信朋友圈中发布多张图片的功能. 在没有这个控件之前,我都是用D ...

  9. ChinaCock界面控件介绍-CCNewsSilder

    上图是控件包里的Demo运行效果,轮播新闻图片. 这个控件用起来简单,拖放一个CCNewsSiler到Form上,设置Align为Top,再设置好高度,然后用代码加载图片: procedure TFo ...

随机推荐

  1. 一百一十六:CMS系统之使用阿里大于sdk发送短信验证码

    阿里大于短信平台:https://dysms.console.aliyun.com/dysms.htm#/overview 使用教程:https://blog.csdn.net/qq103189393 ...

  2. Windows添加启动项的两种方法

    方案1直接将脚本放到启动文件夹里面 C:\Users\XXX\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 方案2 Win ...

  3. Java中传入一个时间范围,取出该时间范围内所有日期的集合

    直接上代码: import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; impor ...

  4. Java泛型(8):自限定&参数协变

    自限定 自限定将强制泛型当做自己的边界参数来使用.自限定所做的,就是要求在继承关系中,像下面这样使用这个类: class A extends SelfBounded<A> {} 它的意义是 ...

  5. 启动nfs清除端口占用过程

    centos7起nfs服务. 按教程执行: vim /etc/exportsyum install -y nfs-utils systemctl enable rpcbind.service syst ...

  6. Unreal Engine* 4.19 的 CPU 功能检测

    随着现代 CPU 内核数量的增加,可以拥有更多的游戏功能.但是,相比配备高端系统的玩家,内核数量较少的玩家可能会处于劣势.为了缩小这种差距,可以使用 C++ 和蓝图划分特性.这样可以实现最大的 CPU ...

  7. 配置glance使用ceph作为后端存储

    在ceph监视器上执行 1.创建pool池 为glance服务创建pool池(因为我只有一个OSD节点,所以要将副本数设置为1) ceph osd pool create glance-images  ...

  8. 前端CSS实现图片自适应背景大小

    <body> <div> <!--背景图片--> <div id="web_bg" style="background-imag ...

  9. hdu 1506 直方图内最大矩形

    题目传送门//res tp hdu 单调栈的经典问题 维护区间的左右边界计算面积即可 #include<iostream> #include<algorithm> #inclu ...

  10. P1541 乌龟棋(动态规划)

    (点击此处查看原题) 题意 此处有n个位置,记为1~n,每个位置上都对应一个权值,乌龟从编号为1的位置出发,利用m张爬行卡片到达位置n,爬行卡牌有四种,分别可以让乌龟移动1,2,3,4步,并保证将m张 ...