【问题标题】:print multicolumn formatted text vb6打印多列格式化文本 vb6
【发布时间】:2012-10-14 22:44:49
【问题描述】:

我需要打印如下图所示的格式化文本,我如何在 vb6 中实现这一点,因为 vb6 打印对象对此不友好

我需要打印的由方框表示的数据是不相关的

【问题讨论】:

    标签: printing vb6 formatting


    【解决方案1】:

    这不是很困难。您可以使用 ScaleLeftScaleWidthCurrentXCurrentY 属性来设置页面上的打印开始位置。在这种情况下,您可能还需要将 Orientation 属性设置为 vbPROPortrait。使用这些定位属性,并设置您想要的字体和样式,然后调用 Printer.Print

    此方法将在页面上绘制 4 个框。使用 (x, y) 坐标或对数字进行硬编码以更改大小。如果您不希望打印机从此方法打印页面并从其他地方调用 Printer.EndDoc,请删除 .EndDoc 语句。 VB6 的完整打印机对象文档可以在http://msdn.microsoft.com/en-us/library/aa443915%28v=vs.60%29.aspx找到。

    Private Sub DrawBox()
    
        With Printer
            .ScaleMode = vbTwips
            lngScaleWidth = .ScaleWidth
            lngScaleHeight = .ScaleHeight
            Printer.Line (.ScaleLeft + lngMargin, .ScaleTop + lngMargin)-(lngScaleWidth / 2 - (100 + lngMargin * 2), lngScaleHeight / 2 - (100 + lngMargin * 2)), lngColor, B
            Printer.Line (lngScaleWidth / 2 + (100 + lngMargin * 2), .ScaleTop + lngMargin)-(.ScaleWidth - lngMargin, lngScaleHeight / 2 - (100 + lngMargin * 2)), lngColor, B
            Printer.Line (.ScaleLeft + lngMargin, lngScaleHeight / 2 + (100 + lngMargin * 2))-(lngScaleWidth / 2 - (100 + lngMargin * 2), .ScaleHeight - lngMargin), lngColor, B
            Printer.Line (lngScaleWidth / 2 + (100 + lngMargin * 2), lngScaleHeight / 2 + (100 + lngMargin * 2))-(.ScaleWidth - lngMargin, .ScaleHeight - lngMargin), lngColor, B
            .EndDoc
        End With
    
    End Sub
    

    下面的示例代码演示了一些定位和其他属性。

    Dim lMargin as Integer
    lMargin = 200
    
    With Printer
        .FontBold = True
        .FontItalic = False
        .CurrentY = .CurrentY + (3 * .TextHeight(App.ProductName))
        .CurrentX = lLeftMargin
        .FontName = "Arial"
        .FontSize = 11
        Printer.Print "Date " & strTransDate
    End With
    

    【讨论】:

    • +1 听起来史密斯也需要进行文本对齐。 Printer 对象上有一些方法可以返回一段文本将占用的长度(以缇为单位)。
    • 一些问题。 1. 我怎么知道我已经到达 col1 的页面末尾,所以我可以移动到 col2? 2. 我如何在打印时像“Bold: Text”这样格式化,以及 3. 我如何画一个矩形,给它上色并在上面写文字?
    • @Smith 我没有列出所有可用的属性,因为我认为它们是隐含的。例如 ScaleWidth 意味着还有一个 ScaleHeight。上面的示例演示了 FontBold、FontItalic、FontName 和 FontSize 属性,您可以使用开发环境的 Intellisense 功能发现其他属性。上面的“With”语句允许 .PropertyName 语法的编码简写。例如,如果不使用 With 语句,代码将是 Printer.FontBold = True.
    • 谢谢你的提示,但你没有告诉我如何做多列
    • @Smith 我告诉过你用于控制打印页面位置的属性,以及用于测量正在打印的字符串的属性。 CurrentXCurrentY 用于获取和设置位置,TextHeightTextWidth 用于测量打印的字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多