Размер полей при печати
Мне необходимо получить значения (лево, право, верх, низ)
"непечатаемой области" принтера.
Из статьи Delphi Developer "Take Control of your printer with a custom Delphi
Class":
Чтобы получить левое и верхнее поле принтера, используйте Windows Escape
функцию с параметром GETPRINTINGOFFSET.
var
pntMargins: TPoint;
begin
{ @ означает " адрес переменной" }
Escape(Printer.Handle, GETPRINTINGOFFSET,0,nil,@prntMargins);
end;
|
Получить размер правого и нижнего поля не так просто. Просто не существует
необходимого эквивалента при вызове Escape функции. Но вы можете узнать эти
значения, получив физическую ширину (physWidth) и высоту (physHeight) бумаги,
печатаемую ширину (PrintWidth) и высоту (PrintHeight) страницы и выполнив
несложные арифметические операции:
RightMargin := physWidth - PrintWidth - LeftMargin;
BottomMargin := physHeight - PrintHeight - TopMargin;
|
Физический размер страницы можно получить с помощью Escape-функции, но на
этот раз с использованием параметра GETPHYSPAGESIZE. Указатель pntPageSize
содержит ширину страницы в pntPageSize.x и ее высоту в pntPageSize.y
var
pntPageSize: TPoint;
begin
Escape(Printer.Handle, GETPHYSPAGESIZE,o,nil,@pntPageSize);
end;
|
|