Наши преимущества

[Delphi] Richedit + отступы при печати? Универсальный способ?

DarkReality

Турист
Credits
0
Всем доброго времени суток! Подскажите, пожалуйста, каким образом решить следующую проблему: есть TRichEdit с текстом на 1 лист А4, при печати устанавливаю поля следущим кодом:
Код:
 procedure SetRichEditMargins(const mLeft, mRight, mTop, mBottom: extended;
   const re : TRichEdit) ;
 var
   ppiX, ppiY : integer;
   spaceLeft, spaceTop : integer;
   r : TRect;
 begin
   // pixels per inch
   ppiX := GetDeviceCaps(Printer.Handle, LOGPIXELSX) ;
   ppiY := GetDeviceCaps(Printer.Handle, LOGPIXELSY) ;
   // non-printable margins
   spaceLeft := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX) ;
   spaceTop := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY) ;
   //calc margins
   R.Left := Round(ppiX * mLeft) - spaceLeft;
   R.Right := Printer.PageWidth - Round(ppiX * mRight) - spaceLeft;
   R.Top := Round(ppiY * mTop) - spaceTop;
   R.Bottom := Printer.PageHeight - Round(ppiY * mBottom) - spaceTop;
   // set margins
   re.PageRect := r;
 end;

Вроде все ок, но! На одном принтере печатается все ок, на другом правое поле больше и в итоге текст перетекает на следующую страницу.
Каким образом можно сделать какой нибудь универсальный вариант?
 
Верх