capturar impressoras instaladas

08/11/2005

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


Rafael Santana

Respostas

08/11/2005

Massuda

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



Responder Citar

08/11/2005

Siam

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



Responder Citar

08/11/2005

Rafael Santana

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


Responder Citar

08/11/2005

Siam

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


Responder Citar

08/11/2005

Adriano Santos

Tem só um errinho no fonte do cara.

  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&93; = 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&93; = 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&91;ComboBox1.ItemIndex&93;);
end;



Responder Citar

02/03/2017

Ricardo

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