Lista de Impressoras: Printers - Delphi

Veja nesta Quick como obter a lista de impressoras instaladas na nossa máquina local.

Olá galera, nesta Quick Tips, irei mostra como podemos obter a lista de impressoras instaladas na nossa máquina local, porém conseguimos ainda verificar quais são locais e quais são em rede. Para construção deste exemplo vamos adicionar :

Além de darmos uses em Printers, unit a qual contém as informações sobres as impressoras instaladas, além da possibilidade de configurar estas por sua vez.

Vamos agora as implementações do Clique do BtnListarImpressoras

unit uFrmPrincipal; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Printers; type TFrmPrincipal = class(TForm) BtnListarImpressoras: TButton; ListBoxLocal: TListBox; ListBoxRede: TListBox; Label1: TLabel; Label2: TLabel; procedure BtnListarImpressorasClick(Sender: TObject); procedure ListBoxLocalClick(Sender: TObject); procedure ListBoxRedeClick(Sender: TObject); private function ImpressoraPadrao: String; procedure DefinirImpressoraPadrao(const xNome: String); { Private declarations } public { Public declarations } end; var FrmPrincipal: TFrmPrincipal; implementation {$R *.dfm} { Veja a implementação do clique do botão, onde separamos as impressoras entre local e rede, levando em consideração que o nome da impressora em rede contém no início os caracteres \\ indicando um endereço de rede } procedure TFrmPrincipal.BtnListarImpressorasClick(Sender: TObject); Var I : Integer; begin ListBoxLocal.Clear; ListBoxRede.Clear; for I := 0 to Printer.Printers.Count - 1 do begin if Pos('\\',Printer.Printers.Strings[I]) <> 0 then ListBoxRede.Items.Add(Printer.Printers.Strings[I]) else ListBoxLocal.Items.Add(Printer.Printers.Strings[I]); end; Caption := ImpressoraPadrao; end; { Veja a implementação abaixo para definir uma impressora padrão } procedure TFrmPrincipal.DefinirImpressoraPadrao(const xNome: String); begin Printer.PrinterIndex := Printer.Printers.IndexOf(xNome); end; { Veja a implementação abaixo para saber qual é a impressora padrão } function TFrmPrincipal.ImpressoraPadrao :String; var aDevice : array[0..255] of char; aDriver : array[0..255] of char; aPort : array[0..255] of char; ahDMode : THandle; begin Printer.GetPrinter(aDevice, aDriver, aPort, ahDMode); Result := 'Impressora padrão : ' + aDevice; end; procedure TFrmPrincipal.ListBoxLocalClick(Sender: TObject); begin DefinirImpressoraPadrao(ListBoxLocal.Items.Strings[ListBoxLocal.ItemIndex]); Caption := ImpressoraPadrao; end; procedure TFrmPrincipal.ListBoxRedeClick(Sender: TObject); begin DefinirImpressoraPadrao(ListBoxRede.Items.Strings[ListBoxRede.ItemIndex]); Caption := ImpressoraPadrao; end; end.

Veja ao final o que acontece quando clicamos no BtnListarImpressora:

Fico por aqui ate à próxima Quick Tips. Veja o exemplo completo neste post para download.

Artigos relacionados