本文整理自网络,侵删。
unit Unit2;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type TForm2 = class(TForm) cboPrinter: TComboBox; Button1: TButton; OpenDialog1: TOpenDialog; Memo1: TMemo; procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form2: TForm2;
implementation
{$R *.dfm}uses shellapi, printers;
procedure PrintDocument(const documentToPrint : string) ;var printCommand : string; printerInfo : string; Device, Driver, Port: array[0..255] of Char; hDeviceMode: THandle;begin
if Printer.PrinterIndex = form2.cboPrinter.ItemIndex then begin printCommand := 'print'; printerInfo := ''; end else begin printCommand := 'printto'; Printer.PrinterIndex := form2.cboPrinter.ItemIndex; Printer.GetPrinter(Device, Driver, Port, hDeviceMode) ; printerInfo := Format('"%s" "%s" "%s"', [Device, Driver, Port]) ; form2.memo1.Lines.Add(printerInfo); end;
ShellExecute(Application.Handle, PChar(printCommand), PChar(documentToPrint), PChar(printerInfo), nil, SW_HIDE) ;end;
procedure TForm2.Button1Click(Sender: TObject);beginif OpenDialog1.Execute thenbeginPrintDocument(OpenDialog1.FileName);end;
end;
procedure TForm2.FormCreate(Sender: TObject);begin//have available printers in the combo box//cboPrinter.Items.Assign(printer.Printers);//pre-select the default / active printer//cboPrinter.ItemIndex := printer.PrinterIndex;end;
procedure TForm2.FormShow(Sender: TObject);begincboPrinter.Items := Printer.Printers;end;
end.
相关阅读 >>
更多相关阅读请进入《Delphi》频道 >>