Print any type of document using Delphi #131
- Drop a TComboBox on a form. Name it "cboPrinter". Set Style to csDropDownList.
- 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;
To use this code you'll need an application registered for each file
type you want to print.
Author: | Shlomo Abuisak |
---|---|
Contributor: | Shlomo Abuisak |
Added: | 2009/11/05 |
Last updated: | 2009/11/05 |