0beron, на предыдущей странице в самом низу
Не помогает...
Попробую поковырять LazReport
Добавлено спустя 16 часов 12 минут 48 секунд:Короче фишка в том, что Printer.GetTextHeight возвращает
высоту в экранных пикселах, а TextOut нужны x, y в
точках на дюйм принтера. Не знаю это наверное костыль,
но вот так - работает (txtWork - TSynEdit):
- Код: Выделить всё
procedure TfrmMain.aPrintExecute(Sender: TObject);
var
i, x, y, h, p: integer;
begin
if PrintDialog.Execute then
begin
with Printer do begin
BeginDoc;
p := trunc(YDPI / Screen.PixelsPerInch); //Отношение разрешений принтер-экран
x := 10 * p; y := 10 * p; //Начальные координаты
for i := 0 to txtWork.Lines.Count - 1 do begin
h := Canvas.GetTextHeight(txtWork.Lines.Strings[i]) * p;
if y >= PageHeight then begin
y := 10 * p;
NewPage;
end
else y := y + h;
Canvas.TextOut(x, y, txtWork.Lines.Strings[i]);
end;
EndDoc;
end ;
end;
end;