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 :
- 1 TButton(BtnListarImpressoras)
- 2 TListBox(ListBoxLocal, ListBoxRede)
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.