procedure TForm1.Button1Click(Sender: TObject);
const
LeftMargin = 0.05;
TopMargin = 0.05;
BottomMargin = 0.05;
var
i : integer;
x, y : integer;
KopTekst, VoetTekst: string;
DeltaY : integer;
procedure PrintKoptekst;
var
tmpSize : integer;
tmpStyle: set of Tfontstyle;
begin
tmpSize := Printer.Canvas.Font.Size;
tmpStyle := Printer.Canvas.Font.Style;
x := (Printer.PageWidth - Printer.Canvas.TextWidth(KopTekst)) div 2;
y := Round(TopMargin * Printer.PageHeight);
Printer.Canvas.Font.Size := 14;
Printer.Canvas.Font.Style := [fsBold];
Printer.Canvas.TextOut(x, y, KopTekst);
Printer.Canvas.Font.Size := tmpSize;
Printer.Canvas.Font.Style := tmpStyle;
y := y + 2 * DeltaY;
end;
procedure PrintVoetTekst;
var
tmpY: integer;
begin
tmpY := y;
x := Round((1 - 2 * LeftMargin) * Printer.PageWidth) -
Printer.Canvas.TextWidth(VoetTekst);
y := Round((1 - BottomMargin) * Printer.PageHeight);
Printer.Canvas.TextOut(x, y, VoetTekst);
y := tmpY;
end;
begin
if PrintDialog1.Execute then begin
Printer.BeginDoc;
y := Round(TopMargin * Printer.PageHeight);
Printer.Canvas.Font.Name := 'Arial';
Printer.Canvas.Font.Size := 12;
DeltaY := Printer.Canvas.TextHeight('A');
KopTekst := 'Dit is een koptekst';
VoetTekst := 'print: ' + formatdatetime('d mmmm yyyy', date);
PrintKoptekst;
PrintVoetTekst;
DBGrid.DataSource.DataSet.First;
while not DBGrid.DataSource.DataSet.Eof do begin
x := Round(LeftMargin * Printer.PageWidth);
for i := 0 to DBGrid.DataSource.DataSet.FieldCount - 1 do begin
Printer.Canvas.TextOut(x, y, DBGrid.DataSource.DataSet.Fields[i]
.AsString);
x := x + MulDiv(DBGrid.Columns[i].Width, Printer.PageWidth,
DBGrid.Width);
end;
DBGrid.DataSource.DataSet.Next;
y := y + DeltaY;
if y > (1 - BottomMargin) * Printer.PageHeight - 2 * DeltaY then begin
y := Round(TopMargin * Printer.PageHeight);
Printer.NewPage;
PrintKoptekst;
PrintVoetTekst;
end;
end;
Printer.EndDoc;
end;
end;
Bookmarks