2012-10-14 47 views
0

我需要打印格式的文本像下面的图片中,我怎么能实现这一目标在VB6,因为VB6的打印对象是不是该这样打印多列格式的文本VB6

的数据我需要打印友好由方框表示的非相关

enter image description here

回答

1

这不是很困难的。您可以使用ScaleLeftScaleWidthCurrentX,并CurrentY属性来设置,其中打印的页开始。在这种情况下,您可能还需要将定位属性设置为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 
+0

+1也听起来像史密斯需要做文本对齐。 'Printer'对象上的方法返回将被一段缇文本占用的长度。 – MarkJ

+0

有些问题。 1.如何知道我已经到达col1页面的末尾,所以我可以移动到col2? 2.我如何在打印时如“**粗体:**文字”格式化,以及3.如何绘制矩形,为它着色并在上面写文字? – Smith

+0

@史密斯我没有列出所有可用的属性,因为虽然它们是隐含的。比如ScaleWidth意味着还有一个ScaleHeight。上面的例子演示了FontBold,FontItalic,FontName和FontSize属性,还有其他的你可以通过使用开发环境的Intellisense功能来发现。上面的“With”语句允许编码.PropertyName语法的简写。例如,如果不使用With语句,代码将是Printer.FontBold = True。 – jac