![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Печать формы на принтер
Alexander_K © (2012-09-03 15:47:00)Всем добрый день!
У меня есть процедура (Правда на C++), которая печатает содержимое формы на принтер:
if (PrinterSetupDialog1->Execute())
{
HDC MDC;
HBITMAP MBMP;
TPrinter *prt = Printer();
TCanvas *tmp = new TCanvas;
try
{
prt->BeginDoc();
TRect MR = Rect(0,0,Equipm->ClientWidth,Equipm->ClientHeight);
TRect PR = Rect(0,0,Equipm->ClientWidth * prt->PageWidth / Equipm->ClientWidth,Equipm->ClientHeight * prt->PageWidth / Equipm->ClientWidth);
MDC = CreateCompatibleDC(prt->Canvas->Handle);
// MDC = CreateCompatibleDC(0);
tmp->Handle = MDC;
MBMP = CreateCompatibleBitmap(prt->Canvas->Handle, Equipm->ClientWidth, Equipm->ClientHeight);
SelectObject(MDC, MBMP);
Equipm->PaintTo(MDC,0,0);
prt->Canvas->CopyRect(PR, tmp, MR);
prt->EndDoc();
}
__finally
{
DeleteDC(MDC);
DeleteObject(MBMP);
delete tmp;
}
}
Форма печатается, все контролы печатаются нормально, кроме ComboBox-ов. Текст ComboBox-ов почему-то не печатается...
В чем может быть дело?
Inovet (2012-10-01 19:20:00) [1]> [16] Alexander_K (01.10.12 14:42)
> что надо печатать именно форму, как она есть на экране, чтобы люди не путались...
Это от непонимания. Ты бы сделал по-человечески в генераторе и показал. Себе же проще в итоге и этим людям, о которых печётся заказчик.
Alexander_K (2012-10-01 14:42:00) [2]Дмитрий Белькевич (30.09.12 11:37) [14]
Ну я и сделал через принтскрин... но просто интересно ж, может кто-то поборол...
Германн © (01.10.12 02:39) [15]
Ну вот так вот, форма довольно большая, на ней много всяких контролов с данными, которые берутся из БД, и вот заказчику хочется печать всей этой формы. На предложение использовать генератор отчетов, было сказано, что надо печатать именно форму, как она есть на экране, чтобы люди не путались... Ну им видней...
Германн (2012-10-01 02:39:00) [3]
> Alexander_K (14.09.12 11:35) [11]
>
> Не, именно печать формы
>
А зачем "именно печать формы"? Это ведь бред, если подумать.
Дмитрий Белькевич (2012-09-30 11:37:00) [4]
> Форма печатается, вписывается в лист принтера, но текст
> в ComboBox-ах как же не печатается.
Не судьба :)
Может попробовать как в [0], через промежуточный битмап. И вручную 'допечатывать' недостающие данные? Ну если иначе никак...
Alexander_K (2012-09-25 09:44:00) [5]Попробовал TForm.Print, с PrintScale := poPrintToFit;
Форма печатается, вписывается в лист принтера, но текст в ComboBox-ах как же не печатается.
Дмитрий Белькевич (2012-09-19 00:01:00) [6]
> К сожалению TForm.Print не вписывает выводимую форму в лист
> принтера, поэтому она печатается маленьким квадратиком в
> левом верхнем углу.
PrintScale?
Alexander_K (2012-09-14 11:35:00) [7]Не, именно печать формы
Германн (2012-09-13 13:14:00) [8]Имхо, нужен генератор отчетов.
Anatoly Podgoretsky (2012-09-13 09:12:00) [9]Вряд ли ты правильно понял заказчика.
Alexander_K (2012-09-13 09:09:00) [10]Заказчик так захотел.
Inovet (2012-09-12 18:09:00) [11]Какая необходимость печатать форму?
Alexander_K (2012-09-12 16:47:00) [12]К сожалению TForm.Print не вписывает выводимую форму в лист принтера, поэтому она печатается маленьким квадратиком в левом верхнем углу.
Дмитрий Белькевич (2012-09-12 11:48:00) [13]>У меня есть процедура (Правда на C++), которая печатает содержимое формы на принтер:
TForm.Print ?
Alexander_K (2012-09-06 08:47:00) [14]Народ, не уж то никто не сталкивался? Я конечно решил данную проблему реализовав печать через принтскрин, но там могут возникать другие нюансы...
Всеж бы хотелось через стандартные методы
Alexander_K (2012-09-04 08:16:00) [15]Я поясню, может быть не совсем понятно написал:
Все контролы печатаются нормально, и сами контролы и содержимый текст. А вот ComboBox-ы сами контролы печатаются, а вот вместо содержимого текста - пусто.
Alexander_K (2012-09-04 08:07:00) [16]Да, эдиты, мемо, лэйблы и т.д.
Дмитрий С (2012-09-03 18:06:00) [17]
> все контролы
А другие винконтролы есть на форме?