2012-10-14 50 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