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

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

Страниц: 1 2 [3] 4 5 6   Вниз
  Печать  
Автор Тема: Генератор отчетов CuteReport 1.3.1 (обновляется)  (Прочитано 77012 раз)
AlFoX
Гость
« Ответ #30 : Октябрь 09, 2014, 12:50 »

В общем, не работает root.populate(), не работа использование поля модели из других бандов, не связанных с этой моделью, даже если они исполняются после того банда, который связан.
я ошибся, надо:
root.populate();
root.firstRow();

Сделаю в следующей версии чтобы это делалось автоматически.

Цитировать
Так-же видел в доке можно использовать print() для распечатывания значений, но я не нашел куда этот вывод попадает в редакторе отчетов. В логе, тот что по зеленой стрелочке открывается снизу, пусто.
оно выводится в консоль
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #31 : Октябрь 09, 2014, 14:36 »

я ошибся, надо:
root.populate();
root.firstRow();

Да, помогло, спасибо! Но после отработки details с этой моделью данные опять сбрасываются. Но это уже не проблема, уберу просто эту связь.
Записан

Гугль в помощь
AlFoX
Гость
« Ответ #32 : Октябрь 09, 2014, 23:17 »

Да, помогло, спасибо! Но после отработки details с этой моделью данные опять сбрасываются. Но это уже не проблема, уберу просто эту связь.
Это не баг, это нормальное поведение. Движок переводит курсор датасета на следующую позицию при обработке банда или группы бандов, присоединенных к датасету.
Так что тут либо переводить курсор вначало вручную, либо создать 2 одинаковых датасета.
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #33 : Ноябрь 11, 2014, 19:43 »

Не соображу, а как мне загасить панели по условию?

У меня пустой список, и я получаю табличку с одной строкой, в которой все поля "undefined", а хотелось бы вообще скрыть табличку в этом случае.

Сперва подумал, что из скрипта это сделать можно, но свойство visible у band я не нашел. Что делать?

ЗЫЖ RTFM пробовал.
Записан

Гугль в помощь
AlFoX
Гость
« Ответ #34 : Ноябрь 12, 2014, 01:23 »

есть свойство "enabled"
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #35 : Ноябрь 12, 2014, 10:50 »

есть свойство "enabled"

Похоже, что оно работает только для Memo. На Details, Rectangle не производит никакого эффекта - выводятся как ни в чем не бывало.

Еще не смог доступиться к значению поля из модели в скрипте, в доке это не описано. Пробовал:
Код:
memo.text = root["field1"]
memo.text = root."field1"
memo.text = root.field1

Получилось так:
Код:
memo.text = root.value("field1")

Это бы тоже надо в доке отразить, базовая функциональность как-никак.
« Последнее редактирование: Ноябрь 12, 2014, 11:17 от navrocky » Записан

Гугль в помощь
lightX2
Гость
« Ответ #36 : Ноябрь 21, 2014, 16:06 »

А как допустим сразу отправить на печать отчёт.
((CuteReport::ReportPreview*)reportPreview)->show();
((CuteReport::ReportPreview*)reportPreview)->run();
((CuteReport::ReportPreview*)reportPreview)->print();
что-то вроде такого, можно даже без отображения.

И не пойму как инициализировать dataset из кода
Записан
AlFoX
Гость
« Ответ #37 : Ноябрь 23, 2014, 00:42 »

Похоже, что оно работает только для Memo. На Details, Rectangle не производит никакого эффекта - выводятся как ни в чем не бывало.
Баг, испрвлю к следующему релизкандтдату

Код:
memo.text = root."field1"
memo.text = root.field1
memo.text =root.value("field1")
Все 3 варианта должны работать. Багрепорт и будет исправлено к релизкандидату.
Записан
AlFoX
Гость
« Ответ #38 : Ноябрь 23, 2014, 00:57 »

А как допустим сразу отправить на печать отчёт.
И не пойму как инициализировать dataset из кода

в исходниках есть код рабочего консольного клиента, можно посмотреть

Код:
m_reportCore->print(reportUrl);
или
Код:
m_reportCore->print(ReportInterface* report);


например:
m_reportCore->print("file://myReport.qtrp");

Инициализировать:
Код:
DatasetInterface * myDataset = reportCore->createDatasetObject(myReport, "Model");
myDataset->setProperty(propertyName, value);
myReport->addDataset(myDataset);
m_reportCore->print(myReport);
Записан
lightX2
Гость
« Ответ #39 : Ноябрь 24, 2014, 09:12 »

Код:
m_reportCore->print(reportUrl);
или
Код:
m_reportCore->print(ReportInterface* report);

сделал так, в отладке пишет
ReportCore               Printing done for report: report without errors

но на принтер ничего не отсылается, и окно печати не показывается.
Как вариант, как окно печати вызвать из reportPreview?
функция print там тоже ничего не вызывает

upd.
а кажется понял , нужно получить список принтеров и задать их reportCore

upd.
а нет, не так..
 printerModules это список каких-то общих драйверов(который только один Standard::Printer )?
а как выбрать уже конечный принтер?
« Последнее редактирование: Ноябрь 24, 2014, 10:49 от lightX2 » Записан
AlFoX
Гость
« Ответ #40 : Ноябрь 24, 2014, 22:03 »

Возможно баг с дефолтовыми настройками принтера. Надо добавить объект принтера прямо в объект отчета и проверить так. выставить свойство "showDialog" = true.
Записан
lightX2
Гость
« Ответ #41 : Ноябрь 27, 2014, 10:05 »

Возможно баг с дефолтовыми настройками принтера. Надо добавить объект принтера прямо в объект отчета и проверить так. выставить свойство "showDialog" = true.

получилось что нужно в начале отрендерить reportPreview , иначе печает криво, причём нужно дождаться выполнения run.
Записан
AlFoX
Гость
« Ответ #42 : Ноябрь 27, 2014, 10:08 »

Можно подробнее? Рендерил и печатал из виджета Preview? или из кода?
Записан
lightX2
Гость
« Ответ #43 : Ноябрь 27, 2014, 11:13 »

Можно подробнее? Рендерил и печатал из виджета Preview? или из кода?

Код:
  CuteReport::ReportPreview *reportPreview = new CuteReport::ReportPreview();
  ((CuteReport::ReportPreview*)reportPreview)->setReportCore(m_coreReport);
  ((CuteReport::ReportPreview*)reportPreview)->connectReport(m_reportObject);
  ((CuteReport::ReportPreview*)reportPreview)->setMinimumWidth(1200);
  ((CuteReport::ReportPreview*)reportPreview)->run();
  ((CuteReport::ReportPreview*)reportPreview)->showFullScreen();

  QEventLoop waitLoop;
  QTimer::singleShot(2000, &waitLoop, SLOT(quit()));
  waitLoop.exec();
 ((CuteReport::ReportPreview*)reportPreview)->slotFitWidth();
  m_coreReport->print(m_reportObject);
  ((CuteReport::ReportPreview*)reportPreview)->close();
« Последнее редактирование: Ноябрь 27, 2014, 11:17 от lightX2 » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #44 : Ноябрь 27, 2014, 11:23 »

/offtop

Код:
CuteReport::ReportPreview *reportPreview = new CuteReport::ReportPreview();
  ((CuteReport::ReportPreview*)reportPreview)->setReportCore(m_coreReport);
...

Объясните пожалуйста, в чем смысл приводить указатель типа CuteReport::ReportPreview к типу CuteReport::ReportPreview? Улыбающийся
да и этот способ приведения остался от си, и в с++ рекомендуется использовать операторы *_cast (static_cast, dynamic_cast, ...)

Записан

Страниц: 1 2 [3] 4 5 6   Вверх
  Печать  
 
Перейти в:  


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