Метрики принтера
- Font.Height дает вам высоту шрифта в пикселях с учетом интервала.
- Не делайте этого, используйте у TPrinter свойства PageHeight и PageWidth.
Printer.Canvas.Font.Height = -12
Printer.PageHeight = 3150
Даже отбрасывая загадку унарного минуса, я получаю 3150 div 12, или 262 строк на страницу.
- Посмотри электронную справку по теме 'Printer.Canvas.TextHeight'. Это свойство покажет вам, какую высоту будет использовать 'текущий шрифт'. Это то, что вы должны использовать для определения 'количество строк на странице'. Например, шрифт Courier New размером 9 точек имеет значение TextHeight, равное 40. Поделите 3150 на эту величину и вы получите 78 'строк', почти правильную величину для 9-точечного шрифта, если принимать во внимание то, что на дюйме помещается примерно 8 строк.
- Для определения количества точек на дюйм (как горизонтально, так и вертикально) можно использовать API функцию GetDeviceCaps. Полученные значения позволят вам правильно преобразовать пиксели в дюймы.
- Значение -12 для 9-точечного шрифта Courier - это высота шрифта для устройства с разрешением 96DPI (например, ваш экран). Попробуйте назначить величину 9 свойству Size после того как вы вызвали BeginDoc и посмотрите на значение свойства Height. Это должно быть значительно большей величиной.
- Вызывая команду Printer.NewPage, вы _не_ начинаете печать очередной строки, а заставляете принтер закончить печать на текущем листе и начать печать сверху нового листа (кажется, принтер HPLJ IIIP понимает эту команду иначе). После вызова Printer.NewPage следующая строка печатается примерно в полдюйме от верха бумаги.
procedure btPrintMemoWithHeader(Memo: TCustomMemo;
ter: TPrinter;