Fórum Delphi - Impressão em impressora 58mm #613937
29/01/2021
0
Bom dia!
Estou tentando configurar uma impressão utilizando TPrinter, porém queria diminuir o espaçamento entre os campos e não estou conseguindo.
Segue a rotina da impressão caso algm possa me ajudar:
procedure TForm1.Button2Click(Sender: TObject);
begin
PrintForm(Form1);
end;
procedure Tform1.Imprimir;
var
iPrinter: TPrinter;
PrinterY: Integer;
vi: Integer;
begin
iPrinter:= TPrinter.Create;
PrinterY:= 0;
iPrinter.Title:= 'MEUSISTEMA - Cupom';
//Se a impressora estiver imprimindo, espera
While Printer.Printing Do
Sleep(100);
iPrinter.BeginDoc;
for vi := 0 to Memo1.lines.Count-1 do
begin
iPrinter.Canvas.Font.Name:='Courier';
iPrinter.Canvas.Font.Style:=[fsBold];
iPrinter.Canvas.Font.Size:=7;
iPrinter.Canvas.Font.Size:=7;
iPrinter.Canvas.TextOut(0,PrinterY,Memo1.lines.Strings[vi]);
Inc(PrinterY,60);
{ iPrinter.Canvas.Font.Size:=13;
iPrinter.Canvas.TextOut(0,PrinterY,'TESTE'); Inc(PrinterY,30);
iPrinter.Canvas.TextOut(0,PrinterY,'--------------------'); Inc(PrinterY,30);
iPrinter.Canvas.Font.Size:= 7;
iPrinter.Canvas.TextOut(0,PrinterY,'OUTRO TESTE');}
end;
Inc(PrinterY,50);
iPrinter.EndDoc;
iPrinter.Free;
end;
procedure TForm1.PrintForm(frm: TForm);
var
bmp: TBitMap;
x, y, WDPI, HDPI: Integer;
OldColor: TColor;
begin
Screen.Cursor := crHourGlass;
OldColor := frm.Color;
frm.Color := clWhite;
frm.Update;
bmp := frm.GetFormImage;
with Printer do
begin
Orientation := poLandscape;
BeginDoc;
HDPI := PageHeight div 8;
WDPI := PageWidth div 8;
x := PageWidth - Round(WDPI * 0.4); {0.4" margem direita}
y := PageHeight - Round(HDPI * 0.5); {0.5" Altura do rodapé}
Canvas.StretchDraw(Rect(0, 0, x, y), bmp);
EndDoc;
end;
bmp.Free;
frm.Color := OldColor;
Screen.Cursor := crDefault;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Imprimir;
end;
end.
Estou tentando configurar uma impressão utilizando TPrinter, porém queria diminuir o espaçamento entre os campos e não estou conseguindo.
Segue a rotina da impressão caso algm possa me ajudar:
procedure TForm1.Button2Click(Sender: TObject);
begin
PrintForm(Form1);
end;
procedure Tform1.Imprimir;
var
iPrinter: TPrinter;
PrinterY: Integer;
vi: Integer;
begin
iPrinter:= TPrinter.Create;
PrinterY:= 0;
iPrinter.Title:= 'MEUSISTEMA - Cupom';
//Se a impressora estiver imprimindo, espera
While Printer.Printing Do
Sleep(100);
iPrinter.BeginDoc;
for vi := 0 to Memo1.lines.Count-1 do
begin
iPrinter.Canvas.Font.Name:='Courier';
iPrinter.Canvas.Font.Style:=[fsBold];
iPrinter.Canvas.Font.Size:=7;
iPrinter.Canvas.Font.Size:=7;
iPrinter.Canvas.TextOut(0,PrinterY,Memo1.lines.Strings[vi]);
Inc(PrinterY,60);
{ iPrinter.Canvas.Font.Size:=13;
iPrinter.Canvas.TextOut(0,PrinterY,'TESTE'); Inc(PrinterY,30);
iPrinter.Canvas.TextOut(0,PrinterY,'--------------------'); Inc(PrinterY,30);
iPrinter.Canvas.Font.Size:= 7;
iPrinter.Canvas.TextOut(0,PrinterY,'OUTRO TESTE');}
end;
Inc(PrinterY,50);
iPrinter.EndDoc;
iPrinter.Free;
end;
procedure TForm1.PrintForm(frm: TForm);
var
bmp: TBitMap;
x, y, WDPI, HDPI: Integer;
OldColor: TColor;
begin
Screen.Cursor := crHourGlass;
OldColor := frm.Color;
frm.Color := clWhite;
frm.Update;
bmp := frm.GetFormImage;
with Printer do
begin
Orientation := poLandscape;
BeginDoc;
HDPI := PageHeight div 8;
WDPI := PageWidth div 8;
x := PageWidth - Round(WDPI * 0.4); {0.4" margem direita}
y := PageHeight - Round(HDPI * 0.5); {0.5" Altura do rodapé}
Canvas.StretchDraw(Rect(0, 0, x, y), bmp);
EndDoc;
end;
bmp.Free;
frm.Color := OldColor;
Screen.Cursor := crDefault;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Imprimir;
end;
end.
Nomad
Curtir tópico
+ 0
Responder
Post mais votado
03/02/2021
Procure por RSPrint no github, é open source e vai servir exatamente para o que você esta querendo.
Claudio Andrade
Responder
Gostei + 1
Mais Posts
01/02/2021
Nomad
UP!
Responder
Gostei + 0
03/02/2021
Nomad
UP!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)