Fórum Impressão de Relatórios em Matriciais (Nota Fiscal, Cupom de Venda) #7077
24/06/2009
0
Rogério Nascimento
Curtir tópico
+ 0Posts
24/06/2009
Wesley Yamazack
Seguem dois exemplos de como fazer isso
1 - Exemplo
procedure TForm1.Button1Click(Sender: TObject);
var
F : TextFile;
i : integer;
begin
AssignFile(F,'LPT1');
Rewrite( f ); // e parenteses letra f e fecha parenteses, sem espaço...
i := 0;
Writeln(F,'Teste de impressao - Linha 0');
Writeln(F,'Teste de impressao - Linha 1');
Writeln(F,#27#15+'Teste de Impressão - Linha 2');
Writeln(F,'Teste de impressao - Linha 3');
Writeln(F,#27#18+'Teste de Impressão - Linha 4');
Writeln(F,'Teste de impressao - Linha 5');
Writeln(F,#12); // Ejeta a página
CloseFile( f ); // e parenteses letra f e fecha parenteses, sem espaço.
end;
2 - Exemplo
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Linha:integer;
Tamanho:integer;
Coluna:integer;
begin
Printer.Orientation := poLandscape;
Printer.BeginDoc;
Printer.Canvas.Pen.Width := 5;
Printer.Canvas.Font.Name := 'Times New Roman';
Printer.Canvas.Font.Size := 10;
Linha := 20;
Coluna:= 20;
Tamanho := Printer.Canvas.TextWidth('a');
Table1.First;
while not Table1.Eof do
begin
if Linha = 20 then
begin
Coluna := 20;
Printer.Canvas.TextOut(0,Linha,'Relação de Clientes');
Linha := Linha - Printer.Canvas.Font.Height + 5 ;
Printer.Canvas.TextOut(Coluna,Linha,'Cod');
Coluna:= Coluna + (Tamanho * 5 );
Printer.Canvas.TextOut(Coluna,Linha,'Nome');
Coluna:= Coluna + (Tamanho * 30);
Printer.Canvas.TextOut(Coluna,Linha,'Endereço');
Coluna:= Coluna + (Tamanho * 30);
Linha := Linha - Printer.Canvas.Font.Height + 5 ;
end;
Coluna := 20 ;
Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName('Codigo').AsString);
Coluna:= Coluna + (Tamanho * 5 );
Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName('Nome').AsString);
Coluna:= Coluna + (Tamanho * 30);
Printer.Canvas.TextOut(Coluna,Linha,Table1.FieldByName('End').AsString);
Coluna:= Coluna + (Tamanho * 30);
Linha := Linha - Printer.Canvas.Font.Height + 5 ;
Table1.Next;
if Linha > Printer.PageHeight-20 then
Begin
Printer.NewPage;
Linha := 20;
end;
end;
Printer.EndDoc;
end;
Espero que te ajude meu amigo.
Att,
Wesley Y
Gostei + 0
24/06/2009
Rogério Nascimento
Me diga uma coisa, se for porta serial, como aquelas impressoras pequenas de comercio, no lugar do LPT1, basta passar COM1, ou COM2, etc?
E quanto a possibilidade de eu montar um form para definir os padrões de layout, seria possivel? Este padrão eu vi em um sistema, era algo +/- assim
Tipo 1 = Sexto
Cfop linha 1, posicao 50
Entrada/Saida linha 1, posicao 62
data emissao linha 2, posicao 45, etc.
É complicado de pegar o layout da impressão desta forma? ou é possivel fazer isto?
Abraços,
Rogério
Gostei + 0
24/06/2009
Rogério Nascimento
Diga-me, qual das duas formas é mais recomendada?
Eu vi que no segundo exemplo ele assume a impressora padrão do micro, tem como escolher uma porta para ele?
Eu consigo jogar isto em um arquivo, caso eu necessite de testar o conteudo sem imprimir?
Abraços,
Rogério.
Gostei + 0
25/06/2009
Wesley Yamazack
Vamos ao exemplo.
procedure TForm1.Button1Click(Sender: TObject);
var
F : TextFile;
i : integer;
begin
AssignFile(F,'LPT1'); //Define qual é a porta que você quer
Rewrite( f ); // e parenteses letra f e fecha parenteses, sem espaço...
i := 0;
Writeln(F,' + EdtNome.Text );
Writeln(F,' + EdtCPF.Text );
Writeln(F,#27#15+' + EdtIdade.Text );
Writeln(F,' + EdtEndereco.Text );
Writeln(F,#27#18+' + EdtSexo.Text );
Writeln(F,' + EdtValor.Text );
Writeln(F,#12); // Ejeta a página
CloseFile( f ); // e parenteses letra f e fecha parenteses, sem espaço.
end;
Att,
Wesley Y
Gostei + 0
25/06/2009
Rogério Nascimento
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)