Visual Basic應用程式的幾種列印方法

2022-03-09 14:39:20 字數 2817 閱讀 2032

列印是編制應用程式過程中最複雜的事情之一,不同的印表機提供了各種不同的功能。編寫能充分利用印表機效能的子程式與編寫應用程式的其它部分一樣都很困難。慶幸的微軟的windows平台使列印工作變得相對容易了。

最近,筆者編制出一套綜合試題庫管理系統,完成試題的編輯、自動組卷及列印試卷等工作,在程式設計時,也碰到了列印問題,筆者找到了幾種列印方法,現將它們整理出來,以飧讀者,希望能給您的工作提供一點方便。

一、採用visual basic提供簡單的列印函式printform方法

應用程式窗體的printform方法時,visual basic把窗體的點陣圖送到當前印表機。該方法的優點在於它幾乎不需要任何程式設計,但也有很大缺陷。最為突出的是當低解析度圖形在高解析度印表機上列印時,其結果令人無法滿意,會產生鋸齒。下面**將在印表機上列印窗體。

private sub command1_click() '用printform列印

me.printform '列印窗體的可見區域

end sub

二、用printer物件

用printer物件可以進行高解析度輸出,但要想產生複雜的列印輸出,程式設計較為繁瑣。printer物件代表系統確省的印表機。printer物件支援許多由窗體和圖形框所支援的屬性和方法,三種物件都有畫線和畫方框。應用程式可用以下列**在printer物件上畫出一平方英吋的方框。它離左上角二英吋。注意:印表機以twips來測量距離。每英吋有1440個twips。

printer.line(2*1440,2*1440)-step(1440,1440), ,b

印表機、從窗體和圖形框都有circle、paintpicture、print、pset、textheight、textwidth方法。使用這些方法,應用程式可以為印表機生成高解析度輸出。

列印文字直接用print方法,見下列**:

printer.print 「hello,china computerworld!」 『列印字串

printer物件還有一些窗體和圖形框都沒有方法:

·newpage告訴印表機,程式對當前輸出頁的傳送已經結束。printer物件應開始新的一頁。

·enddoc告訴visual basic,程式建立文件結束。visual basic應將它傳送到物理印表機上列印。

·killdoc取消當前列印作業。應用程式應該終止由enddoc和killdoc所設定的每個列印作業。

·zoom屬性用於定義列印輸出的縮放因子。

·copies屬性用於定義列印的副本數目。

三、採用直接將資料傳送印表機的方法進行列印輸出

該方法也不太實用。有兩種方法將資料送往印表機。第一種是用print # 方法,就象將資料寫入乙個檔案一樣寫資料。另一種方法寫埠,但不是送文字,而是送特定的pcl語言,pcl表示列印控制語言(print control language)。它是一種特殊語言,用轉義**來控制印表機的具體動作。因為此方法太繁瑣,本文不做太多介紹,見諒。

四、使用richtextbox控制項的selprint方法

如果你在程式設計時用到了richtextbox控制,那麼你可以使用該控制項的selprint 方法來列印,使用非常簡單。下面一段**即用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控制項的可見區域

end sub

上面**先進行打進設定,再進行列印。如果不需要設定,採用下面**更為簡單。

rtf1.selprint printer.hdc '列印rtf1控制項的可見區域

五、可以在vb中呼叫word 97提供的ole自動化服務

六、用vc編制dll模組完成列印

在visual basic中呼叫該模組的混合程式設計的方法進行列印輸出。因涉及vc程式設計比較繁瑣,因篇幅問題這裡不再討論,但可以肯定用vc編制的列印將更具特色。

筆者的試題庫採用的是第五和第六兩種方案,如果機器上沒有word ,就呼叫dll列印模組。列印是程式設計工作中重要的一部分,總的來說,微軟已經使列印變得極為簡便,但還要我們做一些必須的工作。希望本文能夠拓展你程式設計的思路,編出更好的應用程式。

ios應用程式和應用程式委託

其實說白了,就是乙個類將自己不願意實現的方法以協議的方式定義,同時在這個類中包含有乙個型別為id 泛型類 的例項變數,如果另乙個類實現了這個協議,那麼另外的這個類就可以作為第乙個類的委託物件,前乙個類將自己不願意實現的類委託給後乙個類。因為第乙個類擁有第二個類的引用,所有第乙個類的例項可以直接呼叫第...

python啟動應用程式和終止應用程式

每天上班,工作需要,電腦上需要每天開機啟動一些軟體,下班時候,需要關掉一些軟體。乙個乙個開啟和關閉貌似是很繁瑣的,於是乎,這個指令碼產生了。系統環境 win7 32位 python 2.7.9 你還需要安裝pywin32。pip install pywin32 啟動應用程式指令碼 coding ut...

應用程式域

一種邊界,它由公共語言執行庫圍繞同一應用程式範圍內建立的物件建立 即,從應用程式入口點開始,沿著物件啟用的序列的任何位置 應用程式域有助於將在乙個應用程式中建立的物件與在其他應用程式中建立的物件隔離,以使執行時行為可以預知。在乙個單獨的程序中可以存在多個應用程式域。以前使用程序邊界來隔離在同一臺計算...