Imprimir direto na impressora Nao consigo...
Boa noite amigos do DevMedia
é o seguinte:
Já tentei de tudo por aqui, e nao consigo um exemplo simples de Imprimir direto na Impressora.
Será que alguem pode me mandar um código de meia duzia de linhas para começo? vai ser de grande valia pra dar os primeiros passos.
teria que ser com dados de uma TABLE, ou seja vou imprimir todos os clientes da tabela
CodCli na posicao 10, NomeCli na posiçao 15 , e DatCadastro na posiçao 50
Nao se preocupem com salto de pagina ou fim de arquivo, só quero ver a impressora imprimindo.
Quanto ´a visualizaçao do relatorio, fica pra outra oportunidade, mas de repente eu aprendo isso.
Obnrigado a todos
Jotas
[b:a6da3a8f92][/b:a6da3a8f92]
é o seguinte:
Já tentei de tudo por aqui, e nao consigo um exemplo simples de Imprimir direto na Impressora.
Será que alguem pode me mandar um código de meia duzia de linhas para começo? vai ser de grande valia pra dar os primeiros passos.
teria que ser com dados de uma TABLE, ou seja vou imprimir todos os clientes da tabela
CodCli na posicao 10, NomeCli na posiçao 15 , e DatCadastro na posiçao 50
Nao se preocupem com salto de pagina ou fim de arquivo, só quero ver a impressora imprimindo.
Quanto ´a visualizaçao do relatorio, fica pra outra oportunidade, mas de repente eu aprendo isso.
Obnrigado a todos
Jotas
[b:a6da3a8f92][/b:a6da3a8f92]
Jotas
Curtidas 0
Respostas
Diegotiemann
20/08/2008
Sem montar relatório não sei como fazer.
A solução mais simples a adotar, é criar um relatório no QuickReport e em vez de chamar SEuForm.seuQuickREp.preview, chame SEuForm.seuQuickREp.Print;
A solução mais simples a adotar, é criar um relatório no QuickReport e em vez de chamar SEuForm.seuQuickREp.preview, chame SEuForm.seuQuickREp.Print;
GOSTEI 0
Julianomv
20/08/2008
Uma saida um pouco mesmo sofisticada é vc escrever um arquivo TXT (com Write mesmo e depois criar uma arquivinho .BAT (sou da antiga rsrsr) e chamar este arquivo atraves do comando WinExec(´c:\nomear.bat´,SW_SHOW);
no BAT so tem a linha assim
type nomearq_q_escreveu.txt > prn
no BAT so tem a linha assim
type nomearq_q_escreveu.txt > prn
GOSTEI 0
Paulo
20/08/2008
var
Arq:TextFile;
begin
//Estas duas linhas são para configurar a Font, Tamanho e se é negrito ou não
Printer.canvas.font.name := ´Draft 10cpi´;
Printer.canvas.font.style := [];
//AssignPrn - Abre sempre a impressora padrão
//AssignFile - Você terá que informar a porta de impressão(´LPT1´)
AssignPrn(Arq);
Rewrite(Arq);
while not eof(Arq) do
begin
Writeln(Arq
end;
end;
Te mando algumas funções para usar, para alinhar e etc....
Esta função acima ajuda a você a repetir um determinado caracter
Seu uso é:Writeln(Arq,RelRepStr(´-´,80)); Repete numa folha de 80 colunas o hifem.
Esta função evita os caracteres estranhos para a impressora LX300 ou similar, pois ela não reconhece ~,ç,´,´,^ da lingua portuguesa
Seu uso é:AnsiToAscii(String);
Ajusta valores numericos à direita, como é o padrão. Seu uso é:
Writeln(Arq,AjustaNum(String,9)) >> O Nove é o tamanho do campo numerico.
Função para alinhar String à direita como é o padrão. Seu uso é:
Writeln(Arq,AjustaStr(String,35)) >> 35 é o tamanho do campo String.
Espero que te ajude e a mais alguem isso que te passei. Claro que há outras formas de alinhr e etc... Só depende de quem vai escrever os códigos.
Arq:TextFile;
begin
//Estas duas linhas são para configurar a Font, Tamanho e se é negrito ou não
Printer.canvas.font.name := ´Draft 10cpi´;
Printer.canvas.font.style := [];
//AssignPrn - Abre sempre a impressora padrão
//AssignFile - Você terá que informar a porta de impressão(´LPT1´)
AssignPrn(Arq);
Rewrite(Arq);
while not eof(Arq) do
begin
Writeln(Arq
end;
end;
Te mando algumas funções para usar, para alinhar e etc....
function RelRepStr(sStr: string; nVezes: integer): string;
var
s: string;
i: integer;
begin
s := ´´;
for i := 1 to nVezes do
s := s + sStr;
RelRepStr := s;
end;
Esta função acima ajuda a você a repetir um determinado caracter
Seu uso é:Writeln(Arq,RelRepStr(´-´,80)); Repete numa folha de 80 colunas o hifem.
function AnsiToAscii(str : string) : string;
var
i : Integer;
begin
for i := 1 to length(str) do
case str[i] of
´á´ : str[i] := ´a´;
´é´ : str[i] := ´e´;
´í´ : str[i] := ´i´;
´ó´ : str[i] := ´o´;
´ú´ : str[i] := ´u´;
´à´ : str[i] := ´a´;
´è´ : str[i] := ´e´;
´ì´ : str[i] := ´i´;
´ò´ : str[i] := ´o´;
´ù´ : str[i] := ´u´;
´â´ : str[i] := ´a´;
´ê´ : str[i] := ´e´;
´î´ : str[i] := ´i´;
´ô´ : str[i] := ´o´;
´û´ : str[i] := ´u´;
´ä´ : str[i] := ´a´;
´ë´ : str[i] := ´e´;
´ï´ : str[i] := ´i´;
´ö´ : str[i] := ´o´;
´ü´ : str[i] := ´u´;
´ã´ : str[i] := ´a´;
´õ´ : str[i] := ´o´;
´ñ´ : str[i] := ´n´;
´ç´ : str[i] := ´c´;
´Á´ : str[i] := ´A´;
´É´ : str[i] := ´E´;
´Í´ : str[i] := ´I´;
´Ó´ : str[i] := ´O´;
´Ú´ : str[i] := ´U´;
´À´ : str[i] := ´A´;
´È´ : str[i] := ´E´;
´Ì´ : str[i] := ´I´;
´Ò´ : str[i] := ´O´;
´Ù´ : str[i] := ´U´;
´Â´ : str[i] := ´A´;
´Ê´ : str[i] := ´E´;
´Î´ : str[i] := ´I´;
´Ô´ : str[i] := ´O´;
´Û´ : str[i] := ´U´;
´Ä´ : str[i] := ´A´;
´Ë´ : str[i] := ´E´;
´Ï´ : str[i] := ´I´;
´Ö´ : str[i] := ´O´;
´Ü´ : str[i] := ´U´;
´Ã´ : str[i] := ´A´;
´Õ´ : str[i] := ´O´;
´Ñ´ : str[i] := ´N´;
´Ç´ : str[i] := ´C´;
´º´ : str[i] := ´.´;
end;
Result := Str;
end;
Esta função evita os caracteres estranhos para a impressora LX300 ou similar, pois ela não reconhece ~,ç,´,´,^ da lingua portuguesa
Seu uso é:AnsiToAscii(String);
function AjustaNum(str : string; tam: integer) : string;
begin
while length( str ) < tam do
str := ´ ´ + str;
if length(str) > tam then
str := copy(str, 1, tam);
result := str;
end;
Ajusta valores numericos à direita, como é o padrão. Seu uso é:
Writeln(Arq,AjustaNum(String,9)) >> O Nove é o tamanho do campo numerico.
function AjustaStr( str : string; tam: integer) : string;
begin
while length( str ) < tam do
str := str + ´ ´;
if length(str) > tam then
str := copy(str, 1, tam);
result := str;
end;
Função para alinhar String à direita como é o padrão. Seu uso é:
Writeln(Arq,AjustaStr(String,35)) >> 35 é o tamanho do campo String.
Espero que te ajude e a mais alguem isso que te passei. Claro que há outras formas de alinhr e etc... Só depende de quem vai escrever os códigos.
GOSTEI 0
Brunodsr
20/08/2008
Mto bom Paulo.. Tuas funcoes vao me ajudar tb. Eu ia implementar isso dai na mao, mas agora n preciso mais. :)
GOSTEI 0
Jotas
20/08/2008
Oi Paulão
Obrigadão pelas funcoes que vc me mandou tambem..
Mas Olha só: ainda nao consegui o mais facil
Eis o teu código:
var
Arq:TextFile;
begin
//Estas duas linhas são para configurar a Font, Tamanho e se é negrito ou não
Printer.canvas.font.name := ´Draft 10cpi´;
Printer.canvas.font.style := [];
//AssignPrn - Abre sempre a impressora padrão
//AssignFile - Você terá que informar a porta de impressão(´LPT1´)
AssignPrn(Arq); /
Rewrite(Arq);
while not eof(Arq) do
begin
Writeln(Arq
end;
end;
Eu quero imprimir os atrtibutos da minha table1 CodFunc,NomeFunc,Salario
Como atribuir a Tabe1, à variavel Arq ??
eu fiz assim: assignfile(arq, ´table1´)
Me ajuda ai, mais claramente, porque nao consegui
e eu preciso imprimir nas posicoes
por exemplo: PRINT.CANVAS.TESTOUT(10,10, ´ tABEL1.COD´ OU ARQ NAO SEI..,,
ha... coloque tambem o Begin.doc. e o Enddoc
Me explica por favor e desculpe
att.
Jotas
Obrigadão pelas funcoes que vc me mandou tambem..
Mas Olha só: ainda nao consegui o mais facil
Eis o teu código:
var
Arq:TextFile;
begin
//Estas duas linhas são para configurar a Font, Tamanho e se é negrito ou não
Printer.canvas.font.name := ´Draft 10cpi´;
Printer.canvas.font.style := [];
//AssignPrn - Abre sempre a impressora padrão
//AssignFile - Você terá que informar a porta de impressão(´LPT1´)
AssignPrn(Arq); /
Rewrite(Arq);
while not eof(Arq) do
begin
Writeln(Arq
end;
end;
Eu quero imprimir os atrtibutos da minha table1 CodFunc,NomeFunc,Salario
Como atribuir a Tabe1, à variavel Arq ??
eu fiz assim: assignfile(arq, ´table1´)
Me ajuda ai, mais claramente, porque nao consegui
e eu preciso imprimir nas posicoes
por exemplo: PRINT.CANVAS.TESTOUT(10,10, ´ tABEL1.COD´ OU ARQ NAO SEI..,,
ha... coloque tambem o Begin.doc. e o Enddoc
Me explica por favor e desculpe
att.
Jotas
GOSTEI 0
Paulo
20/08/2008
eu fiz assim: assignfile(arq, ´table1´)
Assim não vai funcionar mesmo. Você deve dar um While na tabela e vir relacionando cada campo à variavel arq:
while not Table.Eof do
begin
Writeln(arq,Table.FieldByName(´Campo´).AsString + ´-´ + Table.FieldByName(´Campo2´).AsString;
Table.Next;
end;
Desta forma você vai atribuindo à variável Arq, os valores dos campos.
Lembrando que você deve dar um AssignPrn ou AssignFile, rewrite e etc... antes, dar um First na tabela antes do While e etc...e um closefile(arq) no final de tudo.
GOSTEI 0
Jotas
20/08/2008
Oi Paulo
Agora sim, Tá dando mais certo que Beleza Pura.
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Arq:TextFile;
begin
tabela.Open;
//Estas duas linhas são para configurar a Font, Tamanho e se é negrito ou não
Printer.canvas.font.name := ´Draft 10cpi´;
Printer.canvas.font.style := [];
AssignFile(arq, ´LPT1´);
AssignPrn(arq);
Rewrite(Arq);
TABELA.First;
while not tabela.eof do
begin
Writeln(arq, Tabela.FieldByName(´CodFunci´).AsString + ´ - ´ + Tabela.FieldByName(´NomFunci´).AsString);
tabela.Next ;
end;
CloseFile(Arq);
end;
So Falta Uma pequena coisa...
Preciso de Começar a imprimir, o codigo na Coluna10, e o Nome a partir da coluna 50.
Como Funciona, o Printer.textOut() ??
Tem como colocá-lo aqui, em vez de Writln???
So mais essa, valeu?
Jotas
Agora sim, Tá dando mais certo que Beleza Pura.
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Arq:TextFile;
begin
tabela.Open;
//Estas duas linhas são para configurar a Font, Tamanho e se é negrito ou não
Printer.canvas.font.name := ´Draft 10cpi´;
Printer.canvas.font.style := [];
AssignFile(arq, ´LPT1´);
AssignPrn(arq);
Rewrite(Arq);
TABELA.First;
while not tabela.eof do
begin
Writeln(arq, Tabela.FieldByName(´CodFunci´).AsString + ´ - ´ + Tabela.FieldByName(´NomFunci´).AsString);
tabela.Next ;
end;
CloseFile(Arq);
end;
So Falta Uma pequena coisa...
Preciso de Começar a imprimir, o codigo na Coluna10, e o Nome a partir da coluna 50.
Como Funciona, o Printer.textOut() ??
Tem como colocá-lo aqui, em vez de Writln???
So mais essa, valeu?
Jotas
GOSTEI 0
Paulo
20/08/2008
Nunca usei o Printer.TextOut(), mas te passei uma função(RelRepStr) que você pode ir macando as colunas, com espaços ou outra coisa.
GOSTEI 0
Jotas
20/08/2008
Valeu Caro Paulo.
é uma pena, que nao pode ser facil igual ao Clipper5. (É MUITA COISA PRA ESCREVER, PARA IMPRIMIR UMA LINHA)
Entao se tiver calculos, Ai é que ferrou tudo...
Eu tenho que imprimir uma Fl. de Pagamento, ou um contracheque, e sao 3 colunas...
Nem sei como fazer..
Abraços, e mais uma vez Obrigado
att.
JOTAS
é uma pena, que nao pode ser facil igual ao Clipper5. (É MUITA COISA PRA ESCREVER, PARA IMPRIMIR UMA LINHA)
Entao se tiver calculos, Ai é que ferrou tudo...
Eu tenho que imprimir uma Fl. de Pagamento, ou um contracheque, e sao 3 colunas...
Nem sei como fazer..
Abraços, e mais uma vez Obrigado
att.
JOTAS
GOSTEI 0
Paulo
20/08/2008
Se não resolveu ainda, então o seu Post não acabou. Se puder enviar seus códigos e estrutura das tabelas, talvez nesse fim-de-semana possamos te ajudar melhor, caso ainda não tenha resolvido. Não é tão complicado assim, é que você está vendo de primeira e está achando complexo, mas é mais simples que o Clipper. Aqui nós só encerramos um post, quando o outro lado disser, que está feito. Mande seus códigos que vamos te ajudar a concluir o trabalho.
GOSTEI 0
Godzilla_xf
20/08/2008
Boa noite amigos do DevMedia
é o seguinte:
Já tentei de tudo por aqui, e nao consigo um exemplo simples de Imprimir direto na Impressora.
Será que alguem pode me mandar um código de meia duzia de linhas para começo? vai ser de grande valia pra dar os primeiros passos.
teria que ser com dados de uma TABLE, ou seja vou imprimir todos os clientes da tabela
CodCli na posicao 10, NomeCli na posiçao 15 , e DatCadastro na posiçao 50
Nao se preocupem com salto de pagina ou fim de arquivo, só quero ver a impressora imprimindo.
Quanto ´a visualizaçao do relatorio, fica pra outra oportunidade, mas de repente eu aprendo isso.
Obnrigado a todos
Jotas
[b:8d1d654a63][/b:8d1d654a63]
Olá, por que vc naum usa os componentes do Vinicius2k, o VDOPrint: http://sourceforge.net/project/showfiles.php?group_id=164969&package_id=186980
ou o RDPrint:
http://www.deltress.com.br/rdprint.htm
GOSTEI 0
Jotas
20/08/2008
Ola Paulo
Fico alegre em poder contar com a sua colaboraçao, e de todos aí.
Eu vou me aprofundar mais um pouco em relatorios, pois eu ainda estou engatinhando, e acabo me complicando todo, e atrapalhando voces.
Imprimir um relatório simples, uma linha em baixo da outra, eu sei fazer no Rave, ou qualquer outro aplicativo.
Se eu Souber imprimir uma Fl.dePagamento, onde Vc. Tem Uma coluna para Nome do Funcionario, Base de Salario, etc.. e Outra no Meio do Formulario, com os Proventos em ordem de codigos... e a ultima coluna para descontos tambem em ordem de código.
Se eu aprender a fazer isso, estou apto para fazer quaisquer relatorios.
Voce acha que o Rave, ou RDPrint, Faz isso? Deve fazer sim, eu que nao conheço ainda..
EXEMPLO ASSIM:
RELATORIO DE FOLHA DE PAGAMENTO
--------------------------------------------------------------------------------
Nome REF- proventos REF - descontos
Admissao
----------------------------------------------------------------------------------
Jose de Tal 001-Salarios 101 - Inss
12//05/2008 002-Ferias 102 - Irf
003-O.Ganhos 103 - C.Sindical
105 - Adiantamento
Base IR Total de Prov
Base INSS Total Descontos Liquido a Receber:
___________________________________________________________
outro funcionario ............
Bem, Paulo, talvez me aprofundando no RAVE, eu consiga um lealult parecido, nem que tenha que usar um monte de Bandas etc...
Como disse, vou Tentar, se nao conseguir, vou mandar Um BD pra voce, com 4 tabelas, e te mando o que eu gostaria de aprender.
Obrigado Mais uma Vez, e a Todos ai
Jotas.
Fico alegre em poder contar com a sua colaboraçao, e de todos aí.
Eu vou me aprofundar mais um pouco em relatorios, pois eu ainda estou engatinhando, e acabo me complicando todo, e atrapalhando voces.
Imprimir um relatório simples, uma linha em baixo da outra, eu sei fazer no Rave, ou qualquer outro aplicativo.
Se eu Souber imprimir uma Fl.dePagamento, onde Vc. Tem Uma coluna para Nome do Funcionario, Base de Salario, etc.. e Outra no Meio do Formulario, com os Proventos em ordem de codigos... e a ultima coluna para descontos tambem em ordem de código.
Se eu aprender a fazer isso, estou apto para fazer quaisquer relatorios.
Voce acha que o Rave, ou RDPrint, Faz isso? Deve fazer sim, eu que nao conheço ainda..
EXEMPLO ASSIM:
RELATORIO DE FOLHA DE PAGAMENTO
--------------------------------------------------------------------------------
Nome REF- proventos REF - descontos
Admissao
----------------------------------------------------------------------------------
Jose de Tal 001-Salarios 101 - Inss
12//05/2008 002-Ferias 102 - Irf
003-O.Ganhos 103 - C.Sindical
105 - Adiantamento
Base IR Total de Prov
Base INSS Total Descontos Liquido a Receber:
___________________________________________________________
outro funcionario ............
Bem, Paulo, talvez me aprofundando no RAVE, eu consiga um lealult parecido, nem que tenha que usar um monte de Bandas etc...
Como disse, vou Tentar, se nao conseguir, vou mandar Um BD pra voce, com 4 tabelas, e te mando o que eu gostaria de aprender.
Obrigado Mais uma Vez, e a Todos ai
Jotas.
GOSTEI 0