电竞比分网-中国电竞赛事及体育赛事平台

分享

::VB大世界 -> 經(jīng)驗技巧::

 ShangShujie 2008-06-14
VB 中的打印一直是件比較頭痛的事情。通常大家會采用兩種方法實現(xiàn)打印功能,即使用 Printer 對象和別人制作的打印控件。

如果使用 Printer 對象需要自己去計算和控制打印位置,而在 VB中使用 Twip 作為長度單位的計算量是非常大的。想想,一毫米就有 56.7 Twip,一頁 A4 紙的寬度是 210 毫米,就有 56.7 × 210 = 11907 Twip,如此大的計算量,非把頭算暈不可。

如果使用控件,則有兩個問題,一是網(wǎng)上的控件雖多,但往往沒有詳細的說明文檔,使用的時候需要摸著石頭過河;二是網(wǎng)上的通用控件有時候不能滿足我們寫打印程序的一些特殊要求,如不能設計比較復雜的表格等。

使用 VB 編程的程序員都習慣把控件往窗體上拖,這也是 VB 易用之所在。于是我們就有一種想法:如果設計打印報表也能這么做該多好?這種想法真的不錯,而且也的確能夠?qū)崿F(xiàn),因為 VB 的 Form 對象提供了 PrintForm 方法。PrintForm 方法會使用默認打印機打印當前 Form 中的可視內(nèi)容,所以我們只需要設計一個合適的 Form,就可以非常容易地打印出理想的效果。

下面,我就以打印個人簡歷為例,說說如何使用 Form 實現(xiàn)打印以及需要注意些什么問題。

新建一個 Standard EXE 工程,將工程名改為 MyPrintForm,默認的 Form1 改名為 PrintForm。然后按下表修改其屬性:

BorderStyle

0 - None

Width

10433

BackColor

&H00FFFFFF&

Height

14742

Font

宋體, 小五

 

 

其中,PrintForm 的大小是按 16 開紙的大小設置的。

然后,使用 Label、Shape 和 Line 控件在 PrintForm 中繪制出個人簡歷表格。

個人簡歷繪制完成后直接就可以打印,隨便在窗體中放一個按鈕 Command1,在其 Click 事件中寫兩行代碼即可:

Me.Command1.Visible = False

Me.PrintForm

然而,使用這種方法用于打印實在有些不正規(guī)。而且,那么大一個 PrintForm 顯示在屏幕上,既不能滾動也不能改變位置,實在有些難受——現(xiàn)在是該使用 MDIForm 的時候了。添加一個新的 MDIForm,命名為 MDIFormMain;將 PrintForm 的 MDIChild 屬性改為 True;這時候運行程序,是不是非常漂亮的預覽效果?如果運行的時候 PrintForm 沒有顯示出來,請設置 MDIFormMain 的 AutoShowChldren 屬性為 True。

現(xiàn)在我們只需要為 MDIFormMain 添加菜單或者按鈕以便選擇打印。添加菜單的方法相對比較簡單,所以就添加一個菜單吧:名稱 MenuPrint,標題為“打印(&P)”。不過菜單的代碼當然不會還是 Me.PrintForm 了,應該改為

Me.ActiveForm.PrintForm

至此,簡單的打印功能已經(jīng)完成了。但是對于個人簡歷表格,你是寧愿填好了再打印還是打印好了再填呢?用慣了計算機打印的人恐怕都不太喜歡動筆,所以,如果能直接在 PrintForm 上填寫內(nèi)容,再將填好的表格打印出來就更好了。

要辦到這一點并不難,只需要在每個需要填寫內(nèi)容的地方放上一個 TextBox 按控件即可,當然,這個控件要設置一下:

Appearance

0 - Flat

BorderSytle

0 - None

然后記得清空它們的 Text 屬性,放適當?shù)恼{(diào)整位置和大小。

再打印一次試試,結(jié)果并不如想象的那么好:TextBox 中的文本不是按矢量圖打印的,而是按位圖打印的,所以字體看起來非常不光滑。唯一的解決辦法就是在放置 TextBox 的地方,放置一個同樣大小同樣位置 Label 控件,并使之置于 TextBox 之下。然后修改打印菜單的 Click 事件:

With Me.ActiveForm

Label1.Caption = TextBox1.Text

TextBox1.Visible = False

……

.PrintForm.

End With

從代碼可以看出來,就是把每個 TextBox 的 Text 值賦予對應的 Label 的 Caption 屬性。然后再把這些 TextBox 隱藏掉??纯矗@次打印出來是不是非常令人滿意了!

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多