VB的几种打印方法
我們編程時,如果在程序中加入“打印”功能會使程序更加完善,更加專業(yè)。下面,我提供幾種編寫打印程序的方法以供大家參考。
1. 采用Visual Basic提供的簡單打印函數(shù)PrintForm方法
應(yīng)用程序窗體的PrintForm方法時Visual Basic把當(dāng)前窗體的位圖送到打印機。該方法的優(yōu)點在于它幾乎不需要任何編程但也有很大缺陷。最為突出的是當(dāng)?shù)头直媛蕡D形在高分辨率打印機上打印時其結(jié)果令人無法滿意會產(chǎn)生鋸齒。
代碼如下:
? ? ? ?Private Sub Command1_Click ?'用PrintForm打印
? ? ? ?Me.PrintForm? ? ? ? ? ? ? ? ? ? ? ??'打印窗體的可見區(qū)域
? ? ? ?End Sub
2. 用Printer對象
要想產(chǎn)生復(fù)雜的打印輸出編程較為煩瑣。Printer對象代表系統(tǒng)缺省的打印機Printer對象支持許多由窗體和圖形框所支持的屬性和方法三種對象都有畫線和畫方框。應(yīng)用程序可用以下代碼在Printer對象上畫出1平方英寸的方框。注意:打印機以twips來測量距離。每英寸有1440個twips。
Printer.Line 2 1440?? 4? 1440 -Step 1440 1440 ?B
打印機、從窗體和圖形框都有Circle、PaintPicture、Print、Pset、TextHeight、TextWidth方法。使用這些方法應(yīng)用程序可以為打印機生成高分辨率輸出。
打印文本直接用Print方法,見下列代碼:
Printer.Print "HelloChina ComputerWorld" '打印字符串
Printer對象還有一些窗體和圖形框都沒有方法
NewPage告訴打印機程序?qū)Ξ?dāng)前輸出頁的發(fā)送已經(jīng)結(jié)束Printer對象應(yīng)開始新的一頁。
EndDoc告訴VB程序創(chuàng)建文檔結(jié)束VB應(yīng)將它發(fā)送到物理打印機上打印。
KillDoc取消當(dāng)前打印作業(yè)。應(yīng)用程序應(yīng)該終止由EndDoc和KillDoc所設(shè)定的每個打印作業(yè)。
Zoom屬性用于定義打印輸出的縮放因子。
Copies屬性用于定義打印的副本數(shù)目。
3. 如果你在編程時用到了RichTextBox控件那么你可以使用該控件的SelPrint 方法來打印
代碼如下:
Private Sub Command3_Click ?'SelPrint方法
? ?CommonDialog1.Flags=cdlPDReturnDC+
? ?cdlPDNoPageNums
? ?If RTF1.SelLength = 0 Then 'RTF1為窗體的RichTextBox控制
? ? ? CommonDialog1.Flags = CommonDialog1.Flags+ cdlPDAllPages
? ?Else
? ? ? ?CommonDialog1.Flags = CommonDialog1.Flags+ cdlPDSelection
? ?End If
? ?CommonDialog1.CancelError = True
? ?On Error Resume Next
? ?CommonDialog1.ShowPrinter
? ?If Err.Number = cdlCancel Then Exit Sub
? ?If Err.Number <> 0 Then
? ? ? Beep
? ? ? MsgBox "Error printing file." & vbCrLf + Err.Description vbOKOnly +vbExclamation "Printing Error"
? ? ? Exit Sub
? ?End If
? ?Printer.Print ""
? ?RTF1.SelPrint CommonDialog1.hDC '打印RTF1控件的可見區(qū)域
End Sub
上面代碼先進(jìn)行打進(jìn)設(shè)置再進(jìn)行打印。如果不需要設(shè)置采用下面代碼更為簡單
RTF1.SelPrint Printer.hDC '打印RTF1控件的可見區(qū)域
4.可以在VB中調(diào)用Word 97提供的OLE自動化服務(wù)利用Word 97強大的打印功能來完成VB打印
代碼如下:
Private Sub Command4_Click ?'調(diào)用Word打印
Dim objWord As Object
Const CLASSOBJECT = "Word.Application"
On Error GoTo objError
Set objWord = CreateObjectCLASSOBJECT
objWord.Visible = True
objWord.Documents.Add
With objWord
.ActiveDocument.Paragraphs.Last.Range.Bold = False
.ActiveDocument.Paragraphs.Last.Range.Font.Size =20
.ActiveDocument.Paragraphs.Last.Range.Font.Name = "黑體"
.ActiveDocument.Paragraphs.Last.Range.Font.ColorIndex==4
.ActiveDocument.Paragraphs.Last.Range.Text = "我是計算機世界讀者"
End With
Clipboard.Clear
Clipboard.SetText "通過剪切板向WORD傳送數(shù)據(jù)"
objWord.Selection.Paste
objWord.PrintPreview = True '預(yù)覽方式
'objWord.PrintOut'執(zhí)行打印
'objWord.Quit'退出Word
Exit Sub
objError
If Err <> 429 Then
MsgBox Str$Err ?& Error$
Set objWord = Nothing '不能創(chuàng)建Word對象則退出
Exit Sub
Else
Resume Next
? ?End If
End Sub
總結(jié)
- 上一篇: 5月人民币的市场份额提升,但排名没变!人
- 下一篇: C# 基础——C#特性