type TForm1 = class(TForm) Button1: TButton; ComboBox1: TComboBox; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
{...}
procedure TForm1.FormCreate(Sender: TObject); begin { tell printer to go to the default by setting the PrinterIndex value to -1 } Printer.PrinterIndex := -1;
{ make our combobox non-editable } ComboBox1.Style := csDropDownList;
{ set our combobox items to the printer printers } ComboBox1.Items := Printer.Printers;
{ set combobox to view the default printer according to printer printerindex as set above } ComboBox1.ItemIndex := Printer.PrinterIndex; end;
procedure TForm1.Button1Click(Sender: TObject); var MyHandle : THandle; MyDevice, MyDriver, MyPort: array [0..255] of Char; begin { set printer to the selected according to the combobox itemendex } Printer.PrinterIndex := ComboBox1.ItemIndex;
{ get our printer properties } Printer.GetPrinter(MyDevice, MyDriver, MyPort, MyHandle);
{ create string of exactly what WriteProfileString() wants to see by concat each of the above received character arrays } StrCat( MyDevice, ','); StrCat( MyDevice, MyDriver ); StrCat( MyDevice, ','); StrCat( MyDevice, MyPort );
{ copy our new default printer into our windows ini file to the [WINDOWS] section under DEVICE= } WriteProfileString('WINDOWS', 'DEVICE', MyDevice );
{ tell all applications that the windows ini file has changed, this will cause them all to recheck default printer } SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(pChar('windows'))); end; end;
|
请发表评论