1. Printer tray can be changed using the following code (tested with Delphi 5):
procedure ChangePrinterTray ( Tray: Short ); var ADevice, ADriver, APort: array [0..255] of Char; ADeviceMode: THandle; DevMode: PDeviceMode; begin // retrieve current settings Printer.GetPrinter( ADevice, ADriver, APort, ADeviceMode ); // if we have a DeviceMode if ADeviceMode <> 0 then
begin GlobalUnlock( ADeviceMode ); // unlock it DevMode := GlobalLock( ADeviceMode ); // get a pointer to current printer settings DevMode.dmDefaultSource := Tray; // apply new seting DevMode.dmFields := DevMode.dmFields or DM_DEFAULTSOURCE; // set the flag of what we will update GlobalUnlock( ADeviceMode ); // unlock devicemode Printer.SetPrinter( ADevice, ADriver, APort, ADeviceMode ); // apply new settings end; end;
A similar approach can be used to change any other setting you like. |