capturar impressoras instaladas

08/11/2005

0

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


Rafael Santana

Rafael Santana

Responder

Posts

08/11/2005

Massuda

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



Responder

08/11/2005

Siam

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



Responder

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

08/11/2005

Siam

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


Responder

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] = 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;



Responder

02/03/2017

Ricardo

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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar