ola pessoal preciso do ajuda de vcs no seguinte: gostaria de selecionar uma impressora atraves de um combobox e mandar imprimir um relatorio naquela impressora selecionada mais nao estou conseguindo fazer esse codigo. vejam só um amigo mim passou esse codigo,mais só que ao imprimir ele trocar a impressora padrao pela que foi selecionada no combobox ,mais eu so quero que ela imprima e nao troque a impressora padrao. algeum de vcs sabe com se faz isso . selecionar a impressora e imprimir atraves dquela impressora selecionada? o exemplo que fiz é esse
unit Unit1; interface uses Windows, Messages, SysUtils, printers, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; ComboBox1: TComboBox; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure SetDefaultPrinter(PrinterName: String); var I: Integer; Device : PChar; Driver : Pchar; Port : Pchar; HdeviceMode: Thandle; aPrinter : TPrinter; begin Printer.PrinterIndex := -1; getmem(Device, 255); getmem(Driver, 255); getmem(Port, 255); aPrinter := TPrinter.create; for I := 0 to Printer.printers.Count-1 do begin if Printer.printers[i] = PrinterName then begin aprinter.printerindex := i; aPrinter.getprinter (device, driver, port, HdeviceMode); StrCat(Device, ','); StrCat(Device, Driver ); StrCat(Device, Port ); WriteProfileString('windows', 'device', Device); StrCopy( Device, 'windows' ); SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@Device)); end; end; Freemem(Device, 255); Freemem(Driver, 255); Freemem(Port, 255); aPrinter.Free; end; procedure TForm1.FormCreate(Sender: TObject); begin combobox1.Items.Assign(printer.printers); end; procedure TForm1.Button1Click(Sender: TObject); begin setdefaultprinter(combobox1.Text); form2.QuickRep1.Preview; end; end.