BCB中怎样使用OLE操作EXCEL中的BarCodeCtrl1控件

njquzhan2010 2012-09-18 10:10:11
各位大虾:
小弟在做一个打印条码的工具软件,功能要求是在软件中输入起始条码字符串例如“abcd123456”和条码个数10,然后将生成的10个条码(128码)通过OLE输出的EXCEL中,我在网上看到有使用MS BarCodeCtrl1控件的,就是在Excel中里有个“控件工具箱”里面有“Microsoft BarCode Control 9.0”用这个控件是可以在Excel中生成条码的,小弟不知道怎样在BCB程序中操作这个控件,从而实现我打印条码的功能,请大虾们指点,谢谢!
...全文
740 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
我在BCB里执行下面代码到最后一句时发生意外
sRange.sprintf("%c%ld:%c%ld",'A'+(i%countperrow)*5,lExcelX,'B'+(i%countperrow)*5,lExcelX) ;
ExSheet.OlePropertyGet("Range", sRange.c_str()).OleProcedure("Select");
ExSheet.Ol……
[/Quote]

你先不用瞎写呢,按我说的代码,一步步来。
ccrun.com 2012-09-18
  • 打赏
  • 举报
回复
OLE专业户来也!!!
Variant vObj = vExcelApp.OlePropertyGet("ActiveSheet").OleFunction("OLEObjects").OleFunction("Add",
WideString("BARCODE.BarCodeCtrl.1"), // ClassType
WideString(""), // Filename
false, // Link
false, // DisplayAsIcon
WideString(""), // IconFileName
0, // IconIndex
WideString(""), // IconLabel
98.25, // Left
7.5, // Top
127.5, // Width
84.75 // Height
);
vObj.OleProcedure("Select");


大概是这个样子,未测试。
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
我在BCB里执行下面代码到最后一句时发生意外
sRange.sprintf("%c%ld:%c%ld",'A'+(i%countperrow)*5,lExcelX,'B'+(i%countperrow)*5,lExcelX) ;
ExSheet.OlePropertyGet("Range", sRange.c_str()).OleProcedure("Select");
ExSheet.OlePropertyGet("OLEObjects").OleFunction("Add","ClassType:=""BARCODE.BarCodeCtrl.1""").OleFunction("Select");
我之前没写过加载控件的OLE,不知道是错在哪?
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
我就是不知道ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", Link:=False 这个代码怎么在BCB中用OlePropertyGet,OleFunction等等这些命令翻译它
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
Range("B2").Select
Application.CommandBars("Control Toolbox").Visible = True
ActiveWindow.SmallScroll Down:=-6
ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", Link:=False _
, DisplayAsIcon:=False, Left:=98.25, Top:=7.5, Width:=127.5, Height:= _
84.75).Select
Selection.ShapeRange.IncrementLeft -51.75
Selection.ShapeRange.IncrementTop 32.25
ccrun.com 2012-09-18
  • 打赏
  • 举报
回复
你在Excel中录制一个宏,然后把宏代码贴上来。
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
可能vObj真不是个对象,我按下面的代码试过了,可以改变这两个值了,因为我看到生成的Excel表格中这个控件的名字是“BarCodeCtrl1”,所以我就试了下面的代码
ExSheet.OlePropertyGet("BarCodeCtrl1").OlePropertySet("Style",7);
ExSheet.OlePropertyGet("BarCodeCtrl1").OlePropertySet("Value","abcdef1234567");
好吧,今天受益匪浅,呵呵,等我彻底实现了就结贴啊
ccrun.com 2012-09-18
  • 打赏
  • 举报
回复
see不到图,你的硬盘图只有你能看到。
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
我在Excel里面试过这个控件,就在Excel中工具栏上面点右键,里面有个"控件工具箱",打开工具箱后点击最右面的“其它控件”图标,里面有个Microsoft barcodecontrol 9.0,就是这个控件,在这个大控件里可以看到他的属性
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
ccrun.com 2012-09-18
  • 打赏
  • 举报
回复
你确认vObj是一个 BARCODE.BarCodeCtrl.1 对象么?

如果确认,需要找资料参考一下 BARCODE 类的对象和方法,光猜不行。
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
试过了,提示我Style是未知名称,是不是这个Style和Value是控件里面的属性,他获得不了这个属性名呢,还是需要在Style前面加什么
ccrun.com 2012-09-18
  • 打赏
  • 举报
回复
vObj.OlePropertySet("Style", 7);
vObj.OlePropertySet("Value", WideString("abcd123456"));

这样试吧。
njquzhan2010 2012-09-18
  • 打赏
  • 举报
回复
这个方法能够把BarCodeCtrl控件加到Excel表中,但还有个问题是,怎么修改条码的值和条码控件里面的属性值呢,我要把控件中的Style属性改为7,然后把属性值Value赋值为“abcd123456”这个样子,录制宏好像录不断宏代码呢
源码下载地址: https://pan.quark.cn/s/0d6e3002ba51 ### IR2110文资料知识点详述 #### 一、概述 IR2110是一种专为脉冲宽度调制应用而设计的高性能驱动集成电路,在各类功率转换设备具有广泛的应用,特别是在需要实现隔离驱动的场景下表现出色。该芯片融合了光电隔离与电磁隔离的优势,能够达成快速响应并保持较小的物理尺寸,尤其适合用于小功率的变换装置。 #### 二、IR2110内部结构与特点 **1. 内部结构** - **封装形式**:采用DIP14引脚封装。 - **内部组成**:由逻辑输入单元、电平平移单元以及输出保护单元这三个主要部分构成。 - **悬浮电源**:借助自举电路实现,使得高端工作电压最高能够达到500V,支持±50V/ns的电压变化率。 - **工作电压范围**:逻辑电源电压范围为5~15V,输出电源端电压范围为10~20V,易于与其他逻辑电平进行匹配。 - **工作频率**:最高可达到500kHz。 - **功耗**:在15V条件下静态功耗仅为116mW。 - **延迟时间**:导通延迟120ns,关断延迟94ns。 - **峰值输出电流**:图腾柱输出峰值电流为2A。 **2. 特点** - **独立输入通道**:具备独立的低端和高端输入通道配置。 - **兼容性**:逻辑电源地与功率地之间允许±5V的偏移量,便于与TTL或CMOS电平进行匹配。 - **自举电源**:内置自举电源电路,有效减少驱动电源的数量,从而简化电路设计。 - **高dv/dt能力**:具有较强的dv/dt抑制能力,适合高频开关应用。 - **低功耗**:工作状态下功耗较低,有利于提升整体效率。 #### 三、高压侧...

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧