Visual Basic 6.0 使用者可用的印表機物件
更新:2007 年 11 月
Visual Basic 6.0 的 Printer 物件在 Visual Basic 2008 中已由 PrintDocument 元件取代。這兩者的行為差異很大,但在多數情況下它們的功能是一樣的。
概念上的差異
在 Visual Basic 6.0 中,您是透過建立 Printer 物件,然後使用圖形方法將文字和圖形繪製到虛擬頁面上,完成列印工作。過程中使用了屬性 (Property) 和方法定義印表機屬性 (Attribute),例如 DeviceName、PrintQuality 或 Copies;Orientation 和 PaperSize 的其他屬性 (Property) 則會定義頁面本身的屬性 (Attribute)。EndDoc 方法會按照 Printers 集合中的定義,將輸出傳送至應用程式的預設印表機。
在 Visual Basic 2008 中,Printer 物件已不存在,而改以 PrintDocument 元件定義圖形和文字、以 PrinterSettings 物件定義印表機屬性,並以 PageSettings 類別定義頁面屬性。
注意事項: |
---|
Visual Basic 2008 中的 Printer 物件允許已升級的 Visual Basic 6.0 Printer 程式碼執行,而不需要修改。在開發任何新的程式時,您都應該使用 PrintDocument。 |
列印不再與特定裝置關聯,而且應用程式預設印表機的概念也不再適用。取而代之的是,PrintDocument 元件的 PrintPage 方法可以用來列印至任何裝置,而預設印表機則是屬於整個系統。PrintDialog、PrintPreviewDialog 和 PageSetupDialog 元件,使您可以在執行階段讓使用者選取印表機和列印選項。
ColorMode 屬性
在 Visual Basic 6.0 中,ColorMode 屬性會控制輸出是否可以在彩色印表機上進行單色列印。
而現在,在 Visual Basic 2008 中,則由印表機決定是否要以進階選項公開這個屬性。PrinterSettings 類別的 SupportsColor 屬性可以用來判斷印表機的色彩功能。
DriverName 屬性
在 Visual Basic 6.0 中,是使用 Printer 物件的 DriverName 屬性指定印表機驅動程式。在早期舊版的 Windows 和 MS-DOS 中,需要印表機驅動程式,將輸出轉譯成特定品牌和機型的印表機所能使用的格式,但是到了 Visual Basic 6.0 的時代,幾乎已經不再需要這項作業,但是仍然保留該屬性以支援回溯相容性 (Backward Compatibility)。
在 Visual Basic 2008 中已經沒有 DriverName 屬性,印表機驅動程式是由 Windows 加以管理,也不需再指定不同的驅動程式。
hDC 屬性
在 Visual Basic 6.0 中,Printer 物件的 hDC 屬性會指定裝置內容的控制代碼 (在 Windows 應用程式、裝置驅動程式與印表機之類輸出裝置之間的連結)。
在 Visual Basic 2008 中已經沒有 hDC 屬性,PrintDocument 元件的執行個體就是裝置內容的對等用法。
注意事項: |
---|
雖然不再需要裝置內容的控制代碼,圖形物件仍有 GetHdc 和 ReleaseHdc 方法,可以用於進階案例中。 |
Page 屬性
在 Visual Basic 6.0 中,Page 屬性會傳回應用程式啟動以來 (或是上次 EndDoc 陳述式用於 Printer 物件中以來) 已列印頁面的計數。這個屬性常用來在列印期間加入頁碼。
在 Visual Basic 2008 中不會追蹤頁碼;不過您可以在 BeginPrint 事件中設定變數,並在 PrintPage 事件中遞增變數,輕鬆地達成這項動作。
Port 屬性
在 Visual Basic 6.0 中,Port 屬性會傳回連接埠的名稱,讓文件透過此連接埠傳送至印表機。
在 Visual Basic 2008 中已經沒有 Port 屬性,PrintDialog 和 PrintPreviewDialog 控制項會自動管理連接埠資訊。
RightToLeft 屬性
在 Visual Basic 6.0 中,RightToLeft 屬性會決定 Printer 物件如何在雙向平台 (例如,阿拉伯文版或希伯來文版 Windows95) 上將輸出格式化。
在 Visual Basic 2008 中已經沒有 RightToLeft 屬性,列印方向會由新版本 Windows 的當地語系化設定來控制。
TrackDefault 屬性
在 Visual Basic 6.0 中,TrackDefault 屬性會決定 Printer 物件是否一定指向相同的印表機,或是當您在作業系統的 [控制台] 中變更預設印表機設定後,也變更所指向的印表機。在列印工作進行中變更 TrackDefault 屬性設定,會導致列印立即中止。
在 Visual Basic 2008 中已經沒有 TrackDefault 屬性,而是以 PrinterSettings 類別的 IsDefaultPrinter 屬性判斷印表機是否為預設,不過如果預設印表機變更,列印工作不會中止。
Zoom 屬性
在 Visual Basic 6.0 中,Zoom 屬性會決定列印輸出要放大或縮小的百分比。例如,在 Letter 大小的頁面上,將 Zoom 設定為 50 列印,頁面所包含的資料和 17 x 22 英吋大小的頁面一樣多,因為所印出的文字和圖形會縮小成為原始高度和寬度的一半。
在 Visual Basic 2008 中已經沒有 Zoom 屬性,如果印表機有縮放功能,在 [列印] 對話方塊中會自動公開此設定。您也可以在將輸出指派給 PrintDocument 元件之前,使用圖形方法來縮放輸出。
圖形屬性和方法
在 Visual Basic 6.0 中,有各種不同的圖形屬性和方法可以用來在 Printer 物件上繪製線條、形狀和文字。
在 Visual Basic 2008 中,大多數的物件不再有自己的圖形屬性或方法,但您還是可以藉由建立以及使用 Graphics 物件來繪製線條、形狀和文字。如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的圖形。
Printer 物件的程式碼變更
由於 Visual Basic 6.0 和 Visual Basic 2008 列印模型的差異相當大,程式碼撰寫技術的比較並沒有太大價值。如需在 Visual Basic 2008 中列印的範例,請參閱列印範例。
Printer 物件屬性和方法的對等用法
下表列出 Visual Basic 6.0 的屬性和方法,以及其 Visual Basic 2008 對等用法。具有相同名稱和行為的屬性和方法則不列出。除非另外註明,否則所有 Visual Basic 2008 列舉型別都會對應到 System.Windows.Forms 命名空間。
此資料表提供解釋行為差異的主題之連結。若 Visual Basic 2008 中沒有直接的對等用法時,則提供連結至替代的主題。
屬性
Visual Basic 6.0 |
Visual Basic 2008 對等用法 |
---|---|
ColorMode |
新實作,PrinterSettings 類別的 SupportsColor 屬性可用來決定印表機的色彩功能。 |
Copies |
PrinterSettings 類別的 Copies 屬性。 |
CurrentX CurrentY |
新實作,如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的圖形。 |
DeviceName |
PrinterSettings 類別的 PrinterName 屬性。 |
DrawMode DrawStyle DrawWidth |
新實作,如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的圖形。 |
DriverName |
新實作,已不再需要;印表機驅動程式是由 Windows 管理。 |
Duplex |
PrinterSettings 類別的 Duplex 屬性。 |
FillColor FillStyle |
新實作,如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的圖形。 |
Font FontBold FontCount FontItalic FontName Fonts FontSize FontStrikeThru FontTransparent FontUnderline |
新實作,如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的字型處理方式。 |
ForeColor |
新實作,如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的色彩處理方式。 |
hDC |
已不再需要。PrintDocument 元件的執行個體就等於裝置內容 (Device Context,DC)。 |
Height |
PageSettings 類別的 PaperSize 屬性。 |
Orientation |
PageSettings 類別的 Landscape 屬性。 |
Page |
新實作,不會追蹤目前頁碼;不過您可以在 BeginPrint 事件中設定變數,並在 PrintPage 事件中遞增變數,輕鬆地達成這項動作。 |
PaperBin |
PrinterSettings 類別的 PaperSources 屬性。 |
PaperSize |
PageSettings 類別的 PaperSize 屬性。 |
Port |
已不再需要。PrintPreviewDialog 控制項會自動設定連接埠資訊。 |
PrintQuality |
PrinterSettings 類別的 PrinterResolutions 屬性。 |
RightToLeft |
已不再需要。列印方向是由 Windows 中的當地語系化設定來控制的。 |
ScaleHeight ScaleLeft ScaleMode ScaleTop ScaleWidth |
新實作,如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的座標系統。 |
TrackDefault |
沒有直接的對等用法。PrinterSettings 類別的 IsDefaultPrinter 屬性可用來判斷印表機是否為預設。 |
TwipsPerPixelX TwipsPerPixelY |
已不再需要。Visual Basic 2005 一定是使用像素做為度量單位。 |
Width |
PageSettings 類別的 PaperSize 屬性。 |
Zoom |
已不再需要。如果印表機具有縮放功能,則設定會自動公開在 [列印] 對話方塊中。 |
方法
Visual Basic 6.0 |
Visual Basic 2008 對等用法 |
---|---|
Circle |
新實作,如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的圖形。 |
EndDoc |
|
KillDoc |
|
Line |
新實作,如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的圖形。 |
NewPage |
|
PaintPicture PSet |
新實作,如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的圖形。 |
Scale ScaleX ScaleY |
新實作,如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的座標系統。 |
TextHeight TextWidth |
新實作,如需詳細資訊,請參閱 Visual Basic 6.0 使用者可用的圖形。 |
升級注意事項
當 Visual Basic 6.0 應用程式升級至 Visual Basic 2008 時,Printer 物件的所有執行個體都會升級為 Visual Basic 2008 的 Printer 物件。