Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

LandScape orientation

263
13 июня 2006 года
koltaviy
816 / / 16.12.2004
Всем привет. Возникла следующая проблема..
Есть форма. Ее нужно напечатать, но в режиме 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;

Текст печатается как нужно, т.е. по-горизонатали, а вот изображение формы вообще не печатается..
Подскажите в чем ошибка и как напечатать форму LandScape
1
13 июня 2006 года
kot_
7.3K / / 20.01.2000
[QUOTE=koltaviy]
Текст печатается как нужно, т.е. по-горизонатали, а вот изображение формы вообще не печатается..
Подскажите в чем ошибка и как напечатать форму LandScape[/QUOTE]
Во первых - есть компонент PrintSetup - или что то в этом роде - используй его и устанавливай нужную ориентацию листа.
Если это тебе не подходит - тогда перед тем как печатать - просмотри свою FormImage - и ты поймешь почему не печатается. :)
Для того что бы было все нормально - получи снимок экрана приложения - а затем уже его печатай в коде который ты привел.
263
16 июня 2006 года
koltaviy
816 / / 16.12.2004
Рисунок я просматривал(в TImage) - все с ним нормально..:)
Дело в том, что у меня на форме отчет "нарисован" и мне нужно напечатать только клиентскую часть формы, что и делает Form->Print() с помощью GetFormImage().. Поэтому снимок приложения мне не подойдет..
Компонент называется TPrinterSetup..Спасибо, посмотрю..
Только вот не хотелось чо-то вызывать - настройки пользователю делать нет необходимости.. Для него - лишняя трудность:(
263
22 июня 2006 года
koltaviy
816 / / 16.12.2004
Чтобы при печати форма изображалась Landscape, надо:
 
Код:
TPrinter *Prntr = Printer();
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();

Учитывая, что свой отчет я тоже создаю на TPageControl, данный вариант мне идеально подходит, но Page печатается в сильно уменьшенном варианте. Как мне его растянуть на лист?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог