GARANTIR DESCONTO

Fórum Impressora padrão #294402

03/09/2005

0

Bom galera, o problema é o seguinte:

Eu preciso definir uma impresssora como padrão.
No meu caso no sistema operaciona tem várias impressoras instalada, mais só que na hora de imprimir preciso definir outra como padrão, pois irá ser impressor através de um software frepdf xp que tem a impressora freepdf instalada.

até agora consegui alista de impressora instalada, falta definir a que eu quero como padrão.

ver código

procedure TForm1.FormCreate(Sender: TObject);
Var
Qt, i: integer;
begin
Qt := Printer.Printers.Count;
for i := 0 to Qt - 1 do
ListBox1.Items.Text := ListBox1.Items.Text + Printer.Printers.Strings[i];
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
x: string;
begin
x := ListBox1.Items.Strings[ListBox1.ItemIndex];
ShowMessage(x);
end;

aluém poderia completar a definição da impressora

Grato


Zlink

Zlink

Responder

Posts

03/09/2005

Vinicius2k

Colega,

Com esta procedure vc consegue setar uma impressora como padrão, informando seu nome:
procedure SetDefaultPrinter(S: String);
var
  DefaultPrinter: Array[0..79] of Char;
  APrinter: TPrinter;
  ADevice, ADriver, APort: PChar;
  HDevMode: THandle;
  I: Integer;
  { **** }
  function FetchStr(S: String): String;
  var
    I: Integer;
  begin
    S := TrimLeft(S);
    I := Pos(´,´, S);
    if I = 0 then Result := S
      else Result := Copy(S, 1, (I-1));
  end;
  { **** }
begin
  GetProfileString(´windows´, ´device´, ´´, DefaultPrinter, SizeOf(DefaultPrinter)-1);
  if FetchStr(DefaultPrinter) = S then Exit;
  Printer.PrinterIndex := -1;
  APrinter := TPrinter.Create;
  GetMem(ADevice, 255);
  GetMem(ADriver, 255);
  GetMem(APort, 255);
  for I := 0 to (Printer.Printers.Count - 1) do
  begin
    if Printer.Printers[I] = S then
    begin
      APrinter.PrinterIndex := I;
      APrinter.GetPrinter(ADevice, ADriver, APort, HDevMode);
      StrCat(ADevice, ´,´);
      StrCat(ADevice, ADriver);
      StrCat(ADevice, APort);
      WriteProfileString(´windows´, ´device´, ADevice);
      StrCopy(ADevice, ´windows´ );
      SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@ADevice));
    end;
  end;
  FreeMem(ADevice, 255);
  FreeMem(ADriver, 255);
  FreeMem(APort, 255);
  APrinter.Free;
end;


Para usar:
SetDefaultPrinter(´Nome da impressora´);


PS: Adicione a unit ´Printers´ na lista de uses da seção ´Implementation´.
Espero ter ajudado.

T+


Responder

Gostei + 0

04/09/2005

Zlink

Meu caro amigo Vinicius2K

Ficou Dmais, muito obrigado pela ajuda.
Eu estou usando assim

procedure TForm1.ListBox1Click(Sender: TObject);
var
x: string;
begin
x := ListBox1.Items.Strings[ListBox1.ItemIndex];
[b:dea648a40b] SetDefaultPrinter(x);[/b:dea648a40b]
ShowMessage(x);
end;

end.


Responder

Gostei + 0

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

Aceitar