Print any type of document using Delphi

来源:互联网 发布:吴语拼音软件 编辑:程序博客网 时间:2024/06/09 15:37

 Print any type of document using Delphi

 

1.Drop a TComboBox on a form. Name it "cboPrinter". Set Style to csDropDownList.
2.Put the next two lines in the form's OnCreate event handler.
// have available printers in the combo box
cboPrinter.Items.Assign(printer.Printers);
// pre-select the default / active printer


cboPrinter.ItemIndex := printer.PrinterIndex;Now, here's the method you can use to print any document type to a specified printer:

 

 

uses ShellAPI, Printers;

...

procedure TForm1.PrintDocument(const documentToPrint : string) ;
var
  printCommand : string;
  printerInfo : string;
  Device, Driver, Port: array[0..255] of Char;
  hDeviceMode: THandle;
begin
  if Printer.PrinterIndex = cboPrinter.ItemIndex then
  begin
    printCommand := 'print';
    printerInfo := '';
  end
  else
  begin
    printCommand := 'printto';
    Printer.PrinterIndex := cboPrinter.ItemIndex;
    Printer.GetPrinter(Device, Driver, Port, hDeviceMode) ;
    printerInfo := Format('"%s" "%s" "%s"', [Device, Driver, Port]) ;
  end;
  ShellExecute(
    Application.Handle,
    PChar(printCommand),
    PChar(documentToPrint),
    PChar(printerInfo),
    nil,
    SW_HIDE
  );
end;

 

Note
To use this code you'll need an application registered for each file type you want to print.

 

原创粉丝点击