Mega Code Archive
 
 
    
Bring up a printers properties dialog
Title: bring up a printer's properties dialog?
{
 If you need to create your own printer dialog, you can use the PrinterProperties
 API function to bring up a printer's properties dialog.
}
uses
 WinSpool, Printers;
procedure TForm1.Button1Click(Sender: TObject);
const
 {
 The TPrinterDefaults structure specifies the default data type,
 environment, initialization data, and access rights for a printer.
 }
 Defaults: TPrinterDefaults = (pDatatype: nil;
 pDevMode: nil;
 DesiredAccess: STANDARD_RIGHTS_REQUIRED or PRINTER_ACCESS_USE);
var
 hPrinter: THandle;
 Device: array[0..255] of char;
 Driver: array[0..255] of char;
 Port: array[0..255] of char;
 hDeviceMode: THandle;
 RetVal: Boolean;
begin
 Printer.PrinterIndex := Combobox1.ItemIndex;
 { Retrieve information about the specified printer }
 Printer.GetPrinter(Device,
 Driver,
 Port,
 hDeviceMode);
 { Retrieve a handle identifying the specified printer or print }
 if not OpenPrinter(@Device, hPrinter, @Defaults) then
 RaiseLastWin32Error;
 try
 { Display a printer-properties property sheet for the specified printer }
 PrinterProperties(Handle, hPrinter);
 finally
 { Close the specified printer object }
 ClosePrinter(hPrinter);
 end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 { Show available printers in a Combobox }
 Combobox1.Items := Printer.Printers;
 Combobox1.ItemIndex := 0;
end;