tft每日頭條

 > 科技

 > delphi如何打印文件

delphi如何打印文件

科技 更新时间:2024-07-26 04:07:19

在 Windows 環境下,獲取默認打印機可以使用 WIN32 API 中的 GetProfileString 函數來實現;設置默認打印機可以使用 WIN32 API 中的 WriteProfileString 函數來實現;

在 Delphi 中,使用 Printers 單元中的 Printer 可以獲取所有的打印機及某個打印機的具體信息。

基于以上方法,在 Delphi 中對于系統默認打印機的獲取和設置程序實現如下,界面如下:

delphi如何打印文件(系統默認打印機的獲取和設置)1

默認打印機顯示

單擊“默認打印機設置”按鈕後彈出如下對話框:

delphi如何打印文件(系統默認打印機的獲取和設置)2

打印機列表對話框

delphi如何打印文件(系統默認打印機的獲取和設置)3

打印機列表選項

獲取系統當前默認打印機的代碼如下:

procedure TChildSetPrinterForm.FormCreate(Sender: TObject); begin // 窗體創建時獲取系統默認打印機 GetSystemDefaultPrinter; end; procedure TChildSetPrinterForm.GetSystemDefaultPrinter; begin // 将系統默認打印機的名稱賦值給窗體中的 TEdit 控件中 DefaultPrinterEdit.Text:=GetDefaultPrinter.Split([','])[0]; end; // 調用 GetProfileString 獲取系統的默認打印機 function TChildSetPrinterForm.GetDefaultPrinter: String; var ResStr: array[0..255] of Char; begin GetProfileString('Windows', 'device', '', ResStr, 255); Result := StrPas(ResStr); end;

單擊“默認打印機設置”按鈕的代碼如下:

procedure TChildSetPrinterForm.SetDefaultPrinterBitBtnClick(Sender: TObject); begin // 創建默認打印機設置對話框窗體 DefaultPrinterDialogForm:=TDefaultPrinterDialogForm.Create(Self); // 以模态方式打開該窗體 if DefaultPrinterDialogForm.ShowModal = mrOk then begin // 如果用戶單擊“确定”按鈕,則重新獲取系統默認打印機 GetSystemDefaultPrinter; end; DefaultPrinterDialogForm.Free; end;

單擊“默認打印機設置”按鈕後彈出的對話框代碼如下:

unit UnitDefaultPrinterDialog; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Printers; type TDefaultPrinterDialogForm = class(TForm) Label1: TLabel; PrintersComboBox: TComboBox; // 打印機列表選項 CancelButton: TButton; // 取消按鈕 OkButton: TButton; // 确定按鈕 procedure FormCreate(Sender: TObject); procedure CancelButtonClick(Sender: TObject); // 取消按鈕單擊事件 procedure OkButtonClick(Sender: TObject); // 确定按鈕單擊事件 private { Private declarations } procedure SetDefaultPrinter; // 設置默認打印機 public { Public declarations } end; var DefaultPrinterDialogForm: TDefaultPrinterDialogForm; implementation {$R *.dfm} procedure TDefaultPrinterDialogForm.CancelButtonClick(Sender: TObject); begin // 取消 ModalResult:=mrCancel; end; procedure TDefaultPrinterDialogForm.FormCreate(Sender: TObject); begin // 如果 Printer 對象不存在或者其中的打印機列表數量為0,則退出;表示系統中沒有打印機 if (Printer = nil) or (printer.Printers.Count = 0) then Exit; PrintersComboBox.Items:=Printer.Printers; // 将打印機列表顯示在組合框中 PrintersComboBox.ItemIndex := Printer.PrinterIndex; // 将當前的打印機索引設置組合框的當前索引 end; procedure TDefaultPrinterDialogForm.OkButtonClick(Sender: TObject); begin // 單擊确定按鈕時,設置默認打印機 SetDefaultPrinter; ModalResult:=mrOk; end; procedure TDefaultPrinterDialogForm.SetDefaultPrinter; var MyHandle : THandle; MyDevice, MyDriver, MyPort: array [0..255] of Char; begin { 根據 ComboBox 的 ItemIndex 将打印機設置為選中的打印機 } Printer.PrinterIndex := PrintersComboBox.ItemIndex; { 獲取選中的打印機屬性 } Printer.GetPrinter(MyDevice, MyDriver, MyPort, MyHandle); { 通過分隔上述接收的每個字符數組,創建 WriteProfileString() 所需要的字符串 } StrCat( MyDevice, ','); StrCat( MyDevice, MyDriver ); StrCat( MyDevice, ','); StrCat( MyDevice, MyPort ); { 将新的默認打印機複制到系統的 windows ini 文件中,複制到設備下的 [windows] 部分 } WriteProfileString('WINDOWS', 'DEVICE', MyDevice); end; end.

在對話框中單擊“确定”按鈕後,将用戶選擇的打印機設置為系統默認打印機,同時關閉對話框。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved