Russian Qt Forum
Ноябрь 22, 2024, 10:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Печать отчета  (Прочитано 8614 раз)
andi
Гость
« : Август 20, 2007, 11:32 »

Здрасте всем. Нужна помощь в следующем вопросе.
По результатам работы программы нужно вывести не принтер 2 страницы текста.
Так называемый протокол испытаний.
Перед выводом нужно эти страницы просто просмотреть на экране и по нажатию кнопки отправить на принтер по умолчанию.
Заполнение полей осуществляется программно.  Никаких баз данных и прочих сложностей.
Как быстрей и проще всего это осуществить. Возможно у кого то есть пример?
Посмотрел в сторону ncreport и openrpt. Но как я понял они заточены под использование БД.
Для меня этот функционал избыточен.

Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 20, 2007, 11:44 »

Я использую шаблоны html в которые вставляю данные и для просмотра отправляю в
QTextDocument. Если заинтересовало, могу вечером запостить пример.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #2 : Август 20, 2007, 12:01 »

Посмотри в qtdemo Text Edit (Print preview) там сделан очень грамотно, им и пользуюсь.
Формируешь свой документ (а формировать документ можно как угодно), а дальше отправляешь его классу из примера.
Там даже ни строчки кода подписывать не надо.

« Последнее редактирование: Август 20, 2007, 12:06 от Sergey B. » Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #3 : Август 20, 2007, 12:04 »

Я использую шаблоны html в которые вставляю данные и для просмотра отправляю в
QTextDocument. Если заинтересовало, могу вечером запостить пример.

Хотелось бы увидеть.
Можно было бы нарисовать в редакторе красивую страничку, и вставлять данные в неё.
Записан
andi
Гость
« Ответ #4 : Август 20, 2007, 12:08 »

Все примеры приветствуются.
Как выяснилось, с отчетом не  все так гладко.
Есть потребность размещать кое какие данные в таблице.
Что по этому поводу можете посоветовать.
Сижу ковыряю ncreport. Как я уже понял в принципе не обязательно данные брать из БД.
Нигде не могу найти документацию по ncreport (описание классов и прочие справочные данные).
Их вообще нет или я просто плохо искал?

И еще. Я использую Qt 3.3.6 ( в подписи указано), и там нет этого класса для предосмотра.
Получается что придется либо html использвоватье либо ncreport
« Последнее редактирование: Август 20, 2007, 12:13 от andi » Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #5 : Август 20, 2007, 12:19 »

Да...
Я писал про Qt4. Там в QTextDocument можно легко вставлять таблицы.
По Qt3, сказать ничего не могу, так как уже 2 года на ней не программирую.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Август 20, 2007, 16:56 »

Вот такой шаблон:
Код:
<FONT style="font-size: 12pt;">
<p align="center">Справка $NUMBER_REFERENCE</p>
<p align="center">к делу № $NUMBER_DELO</p>
<p>$FIO снят(а) с учета с $DATE_OUT</p>
<p>Основание: $OSNOVANIE</p>
<br>
<p>$PODPIS</p>
<p>$CURRENT_DATE</p>
</FONT>
Вот так заполняю:
Код:
QStringList qslGetPrintText(const QStringList qslStructText)
{
  QStringList qslPrintText=qslStructText;
  qslPrintText.replaceInStrings("$NUMBER_REFERENCE", qsNumberReference);
  qslPrintText.replaceInStrings("$DATE_OUT", qsDateOut);
  qslPrintText.replaceInStrings("$DATE_SNJAT", qsDateOut1);
  qslPrintText.replaceInStrings("$OSNOVANIE", qsOsnOut);
  return qslPrintText;
}
Печатаю так:
Код:
QTextDocument* document=new QTextDocument();
document->setHtml( qslGetPrintText(qslStructList));
QDialog* dlgPreview=new QDialog(this,Qt::WindowMaximizeButtonHint);
dlgPreview->resize(640,480);
QTextEdit* tePreview=new QTextEdit(dlgPreview);
tePreview->setDocument(document);
QVBoxLayout* layout=new QVBoxLayout();
layout->addWidget(tePreview);
dlgPreview->setLayout(layout);
dlgPreview->exec();
delete document;
delete tePreview;
delete dlgPreview;
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
andi
Гость
« Ответ #7 : Август 21, 2007, 06:03 »

Почти разобрался с ncreport.
Как выяснилось данные он принимает только из БД или из текста с разделителями (причем только из файла).
Думаю, грязный хак, поможет ему переваривать что-нидь еще прямо из кода.
Хотя мне бы больше подошел вариант запихивания в него xml-файла. Думаю над реализацией.
Может кто-то уже придумал?

За HTML-вариант спасибо. Просто и понятно до безобразия.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.