ChinaCock打印控件介绍-TCCFujitsuPrinter实现蓝牙针式打印
项目中遇到,要蓝牙针式打印机,用手机打印表单。感谢专家,对厂家提供的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实现蓝牙针式打印的更多相关文章
- ChinaCock界面控件介绍-CCLoadingIndicator
这是一个显示等待状态的控件,当在线程中执行一个稍长时间的任务,需要显示一个等待过程,免得让用户不知app在做什么?避免用户寂寞. 先看看这个控件的属性说明: BackgroundTransparenc ...
- ChinaCock界面控件介绍-TCCYearMonthSelector
Delphi原生控件支持日期的选择,但对于只选择年月的情况,则没有好的实现.TCCYearMonthSelector正是为解决这个问题而产生的.看看运行效果图: 用法一如即往的简单,这是一个不可视控件 ...
- ChinaCock界面控件介绍-TCCImageViewerForm
有多个图片,左右滑动可以切换,通过手势还可以放大.缩小查看,象常见的相册,就是这样子实现效果. 现在,我们有了TCCImageViewerForm组件,也可以轻松实现这样的场景应用. 现在看看TCCI ...
- ChinaCock界面控件介绍-CCButton
即将发布的ChinaCock新版本,将带来一个CCButton控件,实现可视按钮.Delphi原生的Button,在上面滑动后,当释放手指时会误触发OnClick事件,这不是我们想要的结果,CCBut ...
- ChinaCock界面控件介绍-CCSystemBar
Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体验.而A ...
- ChinaCock界面控件介绍-CCNavigateTitle
先看一下实际项目中的运行效果,如图,通过品牌的导航栏,显示不同品牌的商品列表. 完全基于ChinaCock控件包中CCNavigateTitle组件实现的,这是一个可视控件,从组件面板上拖放一个到Fo ...
- ChinaCock界面控件介绍-TCCBarcodeCreator
条码生成器,可以生成各种条码,包括二维码.这是一个不可视控件.用起来依旧简单. 属性说明: BarCodeColor:生成条码的颜色 BarcodeFormat:生成条码的类型,支持的条码类型: Bo ...
- ChinaCock界面控件介绍-CCGridPictureEditor
CCGridPictureEditor如其名,网格图片编辑控件,实现利用一个网格来显示多张图片的缩略图,这是一个非常实用的控件,实现类似微信朋友圈中发布多张图片的功能. 在没有这个控件之前,我都是用D ...
- ChinaCock界面控件介绍-CCNewsSilder
上图是控件包里的Demo运行效果,轮播新闻图片. 这个控件用起来简单,拖放一个CCNewsSiler到Form上,设置Align为Top,再设置好高度,然后用代码加载图片: procedure TFo ...
随机推荐
- 【11】ajax请求后台接口数据与返回值处理js写法
$.ajax({ url: "/test.php",//后台提供的接口 type: "post", //请求方式是post data:{"type ...
- Linux上MongoDB一些设置
MongoDB启动停止方法 官网安装介绍中依然有启动停止的方式 1 启动 sudo service mongod start 2 停止 sudo service mongod stop 3 重启 su ...
- 四、VSCode调试vue项目
1.先决条件设置 你必须安装好 Chrome 和 VS Code.同时请确保自己在 VS Code 中安装了 Debugger for Chrome 扩展的最新版本. 在可以从 VS Code 调试你 ...
- Unity小白文——单例的定义
当类继承与MonoBehaviour时 public class TestSingle : MonoBehaviour { public static TestSingle Instance; voi ...
- libvirt log系统分析
1.编译和安装 配置参数需要加上–enable-debug=yes,相关定义在src/util/virlog.h文件中定义 图1-1 ENABLE_DEBUG宏 如果没有加这个编译参数,调用VIR_D ...
- 微信扫码无法直接下载APP的apk的解决办法
PHP的处理方式:http://blog.sina.com.cn/s/blog_4cd978f90102wx92.html
- [转帖]AMD第三代锐龙处理器首发评测:i9已无力招架
AMD第三代锐龙处理器首发评测:i9已无力招架 Intel 从之前的 CCX 到了 CCD 增加了缓存 改善了 ccx 之间的延迟. https://baijiahao.baidu.com/s?id= ...
- [转帖]英特尔首款采用10nm技术的混合CPU“Lakefield”即将发布
英特尔首款采用10nm技术的混合CPU“Lakefield”即将发布 intel 也出soc了 里面的东西 跟 安卓和 apple的a系列很像. https://baijiahao.baidu.com ...
- ArrayList类的set()方法
ArrayList类的set()方法用于更新指定位置的内容,若内容是new出来的,则需要调用该set()方法:否则,不需要调用该set()方法,示例如下 User.java public class ...
- Typora的使用-规整笔记 让我以后的笔记内容更加整齐
以后我用typora写笔记使用这种排版方式, 且可以方便的看到大纲. 大标题二级标题 内容分类 三级标题 内容讲解 四级标题 内容分块 五级标题