Dicas de impressão no Delphi
Impressão Com o TPrinter ( Via gerenciador de impressão)
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;
Imprimindo com o Bloco de Notas
WinExec('NotePad.exe /p c:\FileName.txt', 0)
Imprimindo Forms
O exemplo a seguir é um procedimento para imprimir um form. Para imprimir o form, basta informar o nome do mesmo como parâmetro: PrintForm(Form1). Antes de imprimir, a cor atual do form é salva em OldColor e alterada para clWhite (frm.Color := clWhite), para evitar gasto excessivo de tinta da impressora (ou tonner).
PrintForm
uses
Windows, SysUtils, Printers, Forms, Graphics, Controls, Classes;
.
.
.
procedure 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;