彩票走势图

条码插件TBarCode Office系列教程八(OCX篇)

翻译|使用教程|编辑:黄竹雯|2019-04-18 10:32:33.000|阅读 325 次

概述:TBarCode Office 是一款适用于 Microsoft® Word 2007、 2010和2013等具有强大功能的条码插件。通过此插件只需点击几下鼠标便可在您的 Word 文档 - 包括支持系列信件中添加所有条码。从本篇文章开始,我们将讲解在TBarCode Office中关于TBarCode OCX的常见问题解答。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

TBarCode Office 是一款适用于 Microsoft® Word 2007、 2010和2013等具有强大功能的条码插件。通过此插件只需点击几下鼠标便可在您的 Word 文档 - 包括支持系列信件中添加所有条码。

从本篇文章开始,我们将讲解在TBarCode Office中关于TBarCode OCX的常见问题解答。


※如何在Word中使用条形码创建邮件合并文档?

TBarCode Office V10

使用数据源创建邮件合并文档。在条件中插入条形码。使用“插入合并字段”按钮将邮件合并字段插入条形码。

TBarCode V9

要插入多个条形码,您可以使用中的串行字母功能TBarCode Word Toolbar。此功能允许您在创建邮件合并文档后用条形码替换标记的文本。有关TBarCode工具栏及其功能的更多信息,请参阅TBarCode OCX用户手册。

※如何在报告中插入TBarCode OCX(作为ActiveX控件)?

在设计视图中打开一个新报告。如果你需要一个条形码为每个记录,然后插入ActiveX ®控制到具体区域,并在需要的地方进行定位。你可以Insert - ActiveX Control在主菜单中选择。您将看到所有可用元素的列表,您可以从中选择TBarCode。控件将插入详细信息区域。对于表(或查询)中的每个记录集,将打印一次详细信息区域。

※如何控制报表中条形码的内容?

在设计模式中右键单击的TBarCode -的ActiveX ®控制。您将看到一个选择的菜单Properties。在Control Source子菜单中的字段中,data您可以定义控件的内容。这意味着您可以选择编码为条形码的表或查询字段。

※Crystal Reports中的条形码

无法将TBarCode直接添加到报表中,但您可以“动态”创建条形码图像并将其加载到图片框中。按照以下说明查看如何将TBarCode嵌入到Crystal Reports 8中。

通过图片框嵌入(VB6样本)

在一个表格(名为“Form1”)中嵌入一个TBarCode控件(名为“tbc”)和一个图片框(名为“TmpPicture1”)。然后将下面的功能代码添加到表单中。它“动态”创建条形码图像,并使用PictureBox作为绘图表面。

Public Function BarcodeGenerate(Id As String, Width As Long, Height As Long) As PictureBox
Dim nSizing, cm

    tbc.Text = Id
    cm = tbc.CountModules
    TmpPicture1.Cls
    TmpPicture1.ScaleMode = vbPixels
    Form1.ScaleMode = vbPixels

    Width = ScaleX(Width, vbTwips, vbPixels)
    Height = ScaleY(Height, vbTwips, vbPixels)
    nSizing = Int(Width / cm)
    If nSizing < 1 Then nSizing = 1

    TmpPicture1.Width = cm * nSizing
    TmpPicture1.Height = Height
    DoEvents
    tbc.BCDraw TmpPicture1.hDC, 0, 0, TmpPicture1.Width, TmpPicture1.Height
    Set BarcodeGenerate = TmpPicture1

End Function
 

在报告事件代码(格式事件)中调用条形码生成器功能,并将新创建的条形码图像分配给报告中的图片框(名为Picture1)。

 Private Sub Section3_Format(ByVal pFormattingInfo As Object)
    'create the bar code for each record set
    Dim data As String
    data = Field1.Value
    Set Me.Picture1.FormattedPicture =
           Form1.BarcodeGenerate(data, Me.Picture1.Width, Me.Picture1.Height).Image
End Sub
 

通过位图文件嵌入(VB6示例)

在一个表格(名为“Form1”)中嵌入一个TBarCode控件(名为“TBarCode”)并根据需要调整条形码类型和所有其他设置。该条形码对象将在报告运行期间用于“动态”创建条形码。在报告事件代码(格式事件)中,在临时文件夹中创建动态条形码图像,并将此图像加载到报告中的图片框(名为pictBarCode)。

 Private Sub Section3_Format(ByVal pFormattingInfo As Object)

' Simulate data binding
' by saving the bar code as bitmap with data from fldArticleID
' then reload it to a picture control

On Error Resume Next

Dim nWidth
Dim path
Dim fso
    
    ' here we use hard coded temp path (must exist!)
    path = "c:\temp\CR8_" & Me.fldArticleID.Value & ".bmp"
    
    ' reference the TBarCode Control in the Form1
    Form1.TBarCode.Text = Me.fldArticleID.Value
    Form1.TBarCode.PrintDataText = False
    nWidth = Form1.TBarCode.CountModules * 3 'adapt width to number of graphical modules
    
    Form1.TBarCode.SaveImage path, eIMBmp, nWidth, 100, 96, 96
    Me.pictBarcode.SetOleLocation (path)

End Sub

※VB运行时错误'429':ActiveX组件无法创建对象。

如果未使用CreateObject指定完整的Prog-ID,则可能会收到此运行时错误。在项目设置中引用TBarCode Type Lib,并使用以下命令在VB中创建TBarCode对象(TBarCode OCX V9的示例):

Dim objTB作为TBarCode9
      设置objTB = CreateObject(“TBarCode9.TBarCode9”)
      objTB.AboutBox

※如何在VB6中为812.8 dpi创建最佳位图(1D代码)?

方法一

第一种方法使用预设(自定义)模块宽度,设置DPI,然后计算符号的总宽度。该原理也适用于其他打印机。OCX方法BCWidthHdc2可用于计算条形码的宽度。如果已设置模块宽度,请使用[in] nWidth的虚拟值。如果以unit = mm计算宽度,则为SaveImage函数将其转换为Pixels。高度有类似的功能 - 但高度只需要计算2D条形码。

注意:当您将模块宽度设置为精确到0.3125毫米或0.0123英寸时,您在812.8 dpi机器的打印光栅中是100%。这是推荐值之一。如果已启用opt resolution标志,则模块宽度将更改为打印栅格中的下一个(较低)像素边界,因此会“优化”。必须相应地设置Dpi以进行此优化。

Dim widthPx As Long
Dim heightPx As Long
Dim heightMM As Double

TBarCode111.Dpi = 812.8
TBarCode111.SizeMode = eSizeMode_CustomModuleWidth
TBarCode111.ModuleWidth = "312.5"

heightPx = 500
heightMM = heightPx * (25.4 / TBarCode111.Dpi)
widthPx = TBarCode111.BCWidthHdc2(0, 1000, heightMM * 1000, eMUPixel)

TBarCode111.SaveImage "c:\temp\test2.tif", eIMTif, widthPx, heightPx, 812.8, 812.8

方法二

使用第二种更简单的方法,模块宽度未明确设置。相反,传递给GetOptimalBitmapSize(OCX API)函数的缩放因子控制模块宽度。如果您使用它,请不要在API中设置自定义模块宽度和/或最佳分辨率。该函数执行一些额外的放大(基于dpi),在调用函数时应该用DPI = 0关闭。

因为我们知道打印机的DPI,所以我们也知道像素(打印机点)尺寸。我们还知道一个模块应该始终是一个打印机点的整数倍。我们必须考虑通常一个模块根本不应小于0.190毫米(但取决于条形码类型)。然后,您需要做的就是将ScaleX = ModuleWidth / PixelSize因子(= 8,9,10,...)传递给GetOptimalBitmapSize函数,并使用返回的值保存SaveImage。模块宽度:0.0123英寸最佳值为10像素,812.8 dpi。因此,GetOptimalBitmapSize函数的缩放因子为10。

Dim width As Long
Dim height As Long
width = 1
height = 500
TBarCode111.Dpi = 0  'turn off additional dpi/96 scaling
TBarCode111.GetOptimalBitmapSize 10, 10, width, height
TBarCode111.SaveImage "c:\temp\test.tif", eIMTif, width, height, 812.8, 812.8

- 未完待续 -

其他精彩教程,尽在资源列表

工厂春季采购季,知名企业良心推荐,详情点击下方图片


标签:条码生成条码识别条码读取工业4.0

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP