C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Печать, принтер, Определение полей принтера
Lizard
Отправлено: 03.06.2005, 07:17


Ученик-кочегар

Группа: Участник
Сообщений: 20



Добрый день!

Вопрос такой: как определить минимальные поля принтера (как в WORD’е, когда устанавливаешь поля страницы = 0 он предлагает исправить на минимальные).
GIZMO
Отправлено: 03.06.2005, 08:22


Машинист паровоза

Группа: Участник
Сообщений: 174



QUOTE (Lizard @ 03/06/2005, 07:17)
Добрый день!

Вопрос такой: как определить минимальные поля принтера (как в WORD’е, когда устанавливаешь поля страницы = 0 он предлагает исправить на минимальные).

См. GetDeviceCaps...
Lizard
Отправлено: 04.06.2005, 06:36


Ученик-кочегар

Группа: Участник
Сообщений: 20



Вот что придумал

CODE

void __fastcall TForm1::FormCreate(TObject *Sender)
{
int PhysicalWidth, PhysicalHeight, HorzRes, VertRes, xOffset, yOffset;
double Top, Bottom, Left, Right, millimeter = 0.04234388366125; //для перевода пикселя в миллиметры

PhysicalWidth = GetDeviceCaps(Printer()->Handle, PHYSICALWIDTH);
PhysicalHeight = GetDeviceCaps(Printer()->Handle, PHYSICALHEIGHT);

HorzRes = GetDeviceCaps(Printer()->Handle, HORZRES);
VertRes = GetDeviceCaps(Printer()->Handle, VERTRES);

xOffset = GetDeviceCaps(Printer()->Handle, PHYSICALOFFSETX);
yOffset = GetDeviceCaps(Printer()->Handle, PHYSICALOFFSETY);

Top = yOffset * millimeter;
Bottom = ( PhysicalHeight — yOffset — VertRes ) * millimeter;
Left = xOffset * millimeter;
Right = ( PhysicalWidth — xOffset — HorzRes ) * millimeter;

Label1->Caption = Top;
Label2->Caption = Bottom;
Label3->Caption = Left;
Label4->Caption = Right;
}


Кому не лень проверти код и результаты, напишите что получилось (у меня все совпадает).

Отредактировано Lizard — 04/06/2005, 08:28

Вернуться в Вопросы программирования в C++Builder