Fórum PrintDialog #285767
22/06/2005
0
if PrintDialog.execute then begin
AssignFile(f,PrintDialog.????????????????);
Rewrite(f);
end;
??????????= qual funçao q retorna a impressora escolhida ???????
valew
Guilherme
Curtir tópico
+ 0Posts
22/06/2005
Marlon Spiess
Boa sorte
Gostei + 0
22/06/2005
Guilherme
Gostei + 0
22/06/2005
Marlon Spiess
Qt := Printer.Printers.Count;
for i := 0 to Qt - 1 do
ListBox1.Items.Text := ListBox1.Items.Text + Printer.Printers.Strings[i];
então qdo um dblclick no item da listbox
x:=ListBox1.Items.Strings[ListBox1.ItemIndex];
sendo q x é o caminho da impressora selecionada.
Gostei + 0
22/06/2005
Guilherme
Gostei + 0
22/06/2005
Sandra
Para o entendimento da dica do Marlon é simples. Veja.
O [b:9197e115b3]for[/b:9197e115b3] é um contador que varia de 0 (zero - poderia ser outro número também, mas nesse caso foi definido que seria 0) a [b:9197e115b3]n[/b:9197e115b3] (um número qualquer) e a variável [b:9197e115b3]i[/b:9197e115b3] vai receber as variações desses números ([b:9197e115b3]n[/b:9197e115b3]) do contador.
Traduzindo do inglês para o português:
for i := 0 to n do => para i variando de 0 até n, faça.
O [b:9197e115b3]Qt[/b:9197e115b3] foi criado para [b:9197e115b3]contar[/b:9197e115b3] as impressoras disponíveis. Nada impediria de se fazer direto assim:
for i := 0 to Printer.Printers.Count - 1 do
Portanto, [b:9197e115b3]i[/b:9197e115b3] e [b:9197e115b3]Qt[/b:9197e115b3], são do tipo [u:9197e115b3]integer[/u:9197e115b3] => váriáveis inteiras.
O código seguinte (para quando der um duplo clique em algum item do ListBox) o [b:9197e115b3]x[/b:9197e115b3] irá receber [b:9197e115b3]uma das[/b:9197e115b3] impressoras disponíveis após ser selecionada. Então, ela deve ser do tipo [u:9197e115b3]string[/u:9197e115b3] => texto.
Resumindo tudo, veja como ficaria o código completo de acordo com o exemplo dado (acrescentei o ShowMessage somente para entender melhor):
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.ListBox1DblClick(Sender: TObject); var x: string; begin x := ListBox1.Items.Strings[ListBox1.ItemIndex]; ShowMessage(x); end;
Mais um detalhe. Deverá acrescentar a unit [b:9197e115b3]Printers[/b:9197e115b3] na lista de uses da seção interface.
Gostei + 0
27/06/2005
Guilherme
valew
Gostei + 0
27/06/2005
Guilherme
-------------------------------------------------
Nen sembre o que parece ser eh !!!!!!!!!!!!
-------------------------------------------------
Gostei + 0
27/06/2005
Massuda
Gostei + 0
05/07/2005
Guilherme
\\servidor\epsonlx-
lpt1
lpt2
valew
Gostei + 0
05/07/2005
Marcio.theis
procedure TForm1.BitBtn1Click(Sender: TObject); var pDevice, pDriver, pPort: pChar; hDMode: THandle; begin if PrintDialog1.Execute then begin GetMem(pDevice, cchDeviceName); GetMem(pDriver, MAX_PATH); GetMem(pPort, MAX_PATH); Printer.GetPrinter(pDevice, pDriver, pPort, hDMode); if copy(pDevice,1,2) = ´\\´ then Application.MessageBox(PChar(´Impressora selecionada: ´ + pDevice),´Impressora´,MB_OK or MB_APPLMODAL or MB_ICONINFORMATION) else Application.MessageBox(PChar(´Impressora selecioanda: ´ + copy(pPort,1,Length(pPort) - 1)),´Impressora´,MB_OK or MB_APPLMODAL or MB_ICONINFORMATION); FreeMem(pDevice, cchDeviceName); FreeMem(pDriver, MAX_PATH); FreeMem(pPort, MAX_PATH); end; end;
Gostei + 0
05/07/2005
Massuda
Gostei + 0
05/07/2005
Guilherme
so q hora q ponho AssignFile(f,´lpt1:´);
tbm nao funciona o prog trava
e quando ponho AssignFile(f,´\\servidor\epsonlx-´); //é o endereço na rede
imprimi certinho intao quando a impressora estiver na rede tenho q saber o caminho dela na rede nao sua porta !!!!
espero ter esplicado melhor !!!
Gostei + 0
05/07/2005
Massuda
Gostei + 0
06/07/2005
Guilherme
if PrintDialog1.Execute then AssignFile(f,GetCurrentPrinterPort);
Gostei + 0
06/07/2005
Massuda
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)