...bring up a printer's properties dialog?
Author: Thomas Stutz
{
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;
printed from
www.swissdelphicenter.ch
developers knowledge base