Array
(
)

capturar impressoras instaladas

Rafael Santana
   - 08 nov 2005

eu gostaria de capituar as impressoras instaladas e jogar num combobox...como faço?


Massuda
   - 08 nov 2005

#Código

uses 
Printers,
...
SeuComboBox.Items.AddStrings(Printer.Printers);
...



Siam
   - 08 nov 2005

uses Printers;#Código

var i:Integer;
begin
for i := 0 to Printer.Printers.Count-1 do
...
end;



Rafael Santana
   - 08 nov 2005

OBRIGADO PESSOAL...

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


Siam
   - 08 nov 2005

http://delphi.about.com/cs/adptips2001/a/bltip1001_5.htm


Adriano Santos
   - 08 nov 2005

Tem só um errinho no fonte do cara.

#Código


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 é J e não I:

#Código

...
aprinter.printerindex := J;
...


O teste completo segue abaixo:

#Código

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;



Ricardo
   - 02 mar 2017

qual o código em delphi para diferenciar impressões coloridas e preto e branco..