0

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

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

在此处输入图像描述

4

1 回答 1

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
于 2012-10-15T00:43:12.220 回答