LandScape orientation
Есть форма. Ее нужно напечатать, но в режиме LandScape.
Пишу
Код:
Form->Print();
Естественно, все классно.. но вертикально.
А мне надо горизонтально.
Пишу:
Код:
Graphics::TBitmap *FormImage = GetFormImage();
TPrinter *Prntr = Printer();
Prntr->Orientation = poLandscape;
Prntr->BeginDoc();
Prntr->Canvas->TextOutA(10, 10, "Hallo");
Prntr->Canvas->Draw(10, 10, FormImage);
Prntr->EndDoc();
delete FormImage;
delete Prntr;
TPrinter *Prntr = Printer();
Prntr->Orientation = poLandscape;
Prntr->BeginDoc();
Prntr->Canvas->TextOutA(10, 10, "Hallo");
Prntr->Canvas->Draw(10, 10, FormImage);
Prntr->EndDoc();
delete FormImage;
delete Prntr;
Текст печатается как нужно, т.е. по-горизонатали, а вот изображение формы вообще не печатается..
Подскажите в чем ошибка и как напечатать форму LandScape
Текст печатается как нужно, т.е. по-горизонатали, а вот изображение формы вообще не печатается..
Подскажите в чем ошибка и как напечатать форму LandScape[/QUOTE]
Во первых - есть компонент PrintSetup - или что то в этом роде - используй его и устанавливай нужную ориентацию листа.
Если это тебе не подходит - тогда перед тем как печатать - просмотри свою FormImage - и ты поймешь почему не печатается. :)
Для того что бы было все нормально - получи снимок экрана приложения - а затем уже его печатай в коде который ты привел.
Дело в том, что у меня на форме отчет "нарисован" и мне нужно напечатать только клиентскую часть формы, что и делает Form->Print() с помощью GetFormImage().. Поэтому снимок приложения мне не подойдет..
Компонент называется TPrinterSetup..Спасибо, посмотрю..
Только вот не хотелось чо-то вызывать - настройки пользователю делать нет необходимости.. Для него - лишняя трудность:(
Код:
TPrinter *Prntr = Printer();
Prntr->Orientation = poLandscape;
Form1->Print();
Prntr->Orientation = poLandscape;
Form1->Print();
Не знаю насколько это корректно, но срабатывает на ура..
Вопрос следующий:
Если выставить в свойстве формы значение SizeToFit(свойство не помню - чо-то связанное с Print.. :)), то если размеры клиентской области формы меньше чем размеры экрана - при печати изображение формы "растянется" до размеров листа.. а вот обратное не происходит, т.е. GetFormImage() делает снимок не клиентской области, а видимой клиентской области, в результате на всю страницу выводится обрезанная видимая клиентская область формы..
Подскажите как с этим бороться:
Создавать отчет в Excel?(средства отчетов Builder'a мне не подходят)
Пример из Help'a:
Код:
...
Printer()->BeginDoc();
for (int i = Start; i <= Stop; i++)
{
PageControl1->Pages->PaintTo(Printer()->Handle, 10, 10);
if (i != Stop)
Printer()->NewPage();
}
Printer()->EndDoc();
Printer()->BeginDoc();
for (int i = Start; i <= Stop; i++)
{
PageControl1->Pages->PaintTo(Printer()->Handle, 10, 10);
if (i != Stop)
Printer()->NewPage();
}
Printer()->EndDoc();
Учитывая, что свой отчет я тоже создаю на TPageControl, данный вариант мне идеально подходит, но Page печатается в сильно уменьшенном варианте. Как мне его растянуть на лист?