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
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
Curtir tópico
+ 0
Responder
Posts
03/09/2005
Vinicius2k
Colega,
Com esta procedure vc consegue setar uma impressora como padrão, informando seu nome:
Para usar:
PS: Adicione a unit ´Printers´ na lista de uses da seção ´Implementation´.
Espero ter ajudado.
T+
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.
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
Clique aqui para fazer login e interagir na Comunidade :)