capturar impressoras instaladas
08/11/2005
0
Rafael Santana
Posts
08/11/2005
Massuda
uses Printers, ... SeuComboBox.Items.AddStrings(Printer.Printers); ...
08/11/2005
Siam
var i:Integer; begin for i := 0 to Printer.Printers.Count-1 do ... end;
08/11/2005
Rafael Santana
MAS
como eu faço agora, pra pegar essa impressoras e deixar uma delas como padrão? no caso seria a propriedade COMBOBOX.ITEMINDEX = 0
eu preciso que a impressora que estiver nesta posição do combobox seja utilizada pelo meu sistema, na hora de imprimir
08/11/2005
Adriano Santos
procedure SetDefaultPrinter(PrinterName: string); var j: 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 j := 0 to Printer.printers.Count - 1 do begin if Printer.printers[j] = PrinterName then begin aprinter.printerindex := j; 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;
Na linha onde ele atribui o novo valor para o PrinterIndex. O nome da variável correta é [b:90e4d04ffc]J[/b:90e4d04ffc] e não [b:90e4d04ffc]I[/b:90e4d04ffc]:
... aprinter.printerindex := J; ...
O teste completo segue abaixo:
procedure TForm1.Button1Click(Sender: TObject); procedure SetDefaultPrinter(PrinterName: string); var j: 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 j := 0 to Printer.printers.Count - 1 do begin if Printer.printers[j] = PrinterName then begin aprinter.printerindex := j; 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; begin SetDefaultPrinter(ComboBox1.Items[ComboBox1.ItemIndex]); end;
02/03/2017
Ricardo
Clique aqui para fazer login e interagir na Comunidade :)