LimeReport Forum
General Category | Основное => Discussion | Обсуждение => Topic started by: Admin on November 03, 2015, 06:27:15 pm
-
This topic is for reporting bugs in implementations of the Lime Report
----------
В этой теме обсуждаются ошибки и принимаются пожелания.
-
I am using an application with PostgreSql database.
I have problems with this report tool. this tools can not load datasources and connect to database. I would like to know if this bugs can be fixed.
Errors:
1 - When I new report is created. After to create a datasource I got message No query unable to fetch row.
2- When loading a report file I can see data, but datasource is empty after double click in Text Item Editor.
3- When loading a report file, if I click in connect 2 times desgner crash.
Code error:
ModelToDataSource::~ModelToDataSource()
{
if ((m_owned) && m_model!=0)
delete m_model;
}
Can u help me?
I am using Qt Creator 3.5.0 and Qt 5.5.0
Compiler Qt_5_5_0_MinGW_32bit
[вложение удалено администратором]
-
Hi edutucci!
Thanks for your message!
We will fix it as soon as possible.
-
I found the problem for the report in my software.
I will try explain.
When creating new project widget. I want use stackwidget and listwiget.
If I use stackwidget only, limereport can load datasource properly. But if I use listwiget and to add the action void MainWindow::on_listWidget_itemClicked(QListWidgetItem *item) limereport cant load load datasource. I cant understand this.
If I use Limereport in a empty Dialog, limereport works fine. But when I use closepreview I would like to close dialog because after closepreview shows an empty dialog.
Is there an event for this? if not Can you try add it? Close Dialog after closepreview report would be a good solution for me.
Well, Limereport works in a empty window. You must fix it for us. Adding components on screen with actions and limereport stops working does not make sense.
Problems with Dialog:
I have 3 buttons and 1 tableview to show table data on this dialog.
void dlgReport::on_btnDesign_clicked()
{
report->dataManager()->clearUserVariables();
report->setShowProgressDialog(false);
report->designReport();
}
void dlgReport::on_btnPrint_clicked()
{
QString fileName = QApplication::applicationDirPath()+"/demo_reports/garotas.lrxml";
if (!fileName.isEmpty()) {
report->dataManager()->clearUserVariables();
report->loadFromFile(fileName);
report->previewReport();
}
}
When previewReport is executed by the first time I can see data and report works fine. But when previewReport is executed by the second time report crash.
I want to help your report become with bugs and become a better component. Dont get boring with me pls.
[вложение удалено администратором]
-
Hi edutucci !
What you write about the limereport's shortcomings it's very important for us.
What do you mean to say that Limereport works in a empty window ?
Could you send us some samples where LimeReport has unexpected behavior.
-
I have a sample for you
The table garotas not work, but table produtos works
try to found what happening to report garotas if possible.
In widgetProdutos we can see in designer mode datasources and the table data, but in widgetgarotas report can not load datasources.
If load file produtos.lrxml in widgetProdutos, after we open widgetgarotas and load garotas.lrxml I see table garotas but with datasource of the produtos.lrxml.
In pdvsample.zip has:
1- table.xt (database tables)
2- My Software, I remove some codes.
I would like to know if limeport has translation for PT_BR.
[вложение удалено администратором]
-
Hi edutucci , thanks for your sample ! It was very useful. Thanks to it we have found an error! In the next release, which we are going to finish this week, it will be fixed!
What about translation LimeReport doesn't have PT_BR translation yet :(.
-
Thank you for looking my sample and found the error.
Your team has a excelent report. I like helping goods professionals like you that are always helping the people with bugs.
We need a good tool for report and you too.
-
New release 1.3.1 has been uploaded on sourceforge.net
-
Стабильно эмулируется падение. При очень большом увеличение в Preview(от 15 раз) ,подвигать ползунок
[вложение удалено администратором]
-
KorSA, Спасибо поправим.
-
Очень хочется сохранение в .odt или в .doc.
А уж с отладкой мы всегда поможем.
-
Хотелось бы знать, когда планируется сделать экспорт отчета во что-то типа ms excel, ms word, openoffice writer, openoffice calc. Очень нужно!
-
Точно сказать тяжело :) В планах присутствует, но не на первом месте :)
-
Алекс, по последней вот тут теме..
А попробуй что-то вроде
QTextDocument document;
document.drawContent(&painter); // где painter - это painter Отчета из твоего лаймарепорта
а потом можно через QTextDocumentWriter в html и odf перебросить
Вот!
-
В дизайнере отчетов можно выполнить команду Cut для элемента ReportPage1 (второй уровень иерархии объектов). После этого приложение падает либо при попытке редактирования отчета (в частности, при выполнении команды Undo) либо при разрушении ReportEngine.
-
Есть задача сформировать отчет с титульной страницей, отображающей заголовок и некоторую общую информацию о документе. Само содержимое документа должно отображаться со второй страницы. Я пытался использовать свойство startNewPage для DataBand-а, отвечающего за печать содержимого документа, но обнаружил, что это свойство срабатывает, только начиная со второго элемента из источника данных для этого DataBand-а. Т.е. первый элемент печатается на титульной странице, что не очень хорошо. К сожалению, я не обнаружил других путей добиться такого поведения кроме модификации исходного текста LimeReport и введения дополнительного свойства startFromNewPage, которое заставляет печатать первый элемент из DataBand-а с новой страницы (патч прилагается). Может есть более правильные способы добиться описанного выше поведения?
[вложение удалено администратором]
-
dimcus, Я думаю будет логичнее добавить свойство printOnOwnPage к ReportHeader
-
dimcus, Я думаю будет логичнее добавить свойство printOnOwnPage к ReportHeader
Возможно. А если есть задача напечатать в рамках одного отчета несколько таблиц (на основании различных источников данных) и хочется печатать каждую таблицу с новой страницы?
-
В ближайшее время отчеты будут мноностраничными. На днях зафиксируемся в релизе 1.3.11.После этого добавим многостраничность, диалоги и инициализационный скрипт.
-
При сборке под Ubuntu 14.04 (g++ 4.8.4) компиляция завершается с ошибкой:
items/lrimageitem.cpp: In member function ‘virtual void LimeReport::ImageItem::paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*)’:
items/lrimageitem.cpp:213:45: error: call of overloaded ‘abs(qreal)’ is ambiguous
cutX = std::abs(shiftWidth/2);
^
Лечится заменой std::abs на fabs.
-
Лечится заменой std::abs на fabs.
Правильнее qAbs
-
Please Help Me Everyone, Please,, :'( :'( :'(
How Can I AutoHeight TextItem From Height Size from Another Item ?
For Example : The Height Column 'Notes' is depends on The Height Column Data 'Note Test'.
Is There is a Table Design in Lime Report.
Thx A Lot.
Please Help Me... :'( :'( :'( :'( :'(
[вложение удалено администратором]
-
If TextItems placed on DataBand you can use property strechToMaxHeight to make all items the same height
-
Tq For Quick Reply,
I've already doing that, but the problem is the content from Note 1 didn't Complete in Preview.
Please Help Me...
-
Tq For Quick Reply,
I've already doing that, but the problem is the content from Note 1 didn't Complete in Preview.
Please Help Me...
[вложение удалено администратором]
-
Sorry,,
The Content is Auto Height, But This is happenning..
Please Help me
[вложение удалено администратором]
-
The report must be something like this. TextItems placed on DataBand then DataBand connected to datasource to get table data.
[вложение удалено администратором]
-
Also you can use horizontal layout.
-
Ty,, Using Horizontal Layout is the answer.. ;D ;D ;D ;D
-
Please help me again,
Why if i create Data Band, the location of My New Data Bank is not place on the bottom. The New Data Band appear on top of the old Data Band. This is the look like...
Please Help Me.. :'( :'( :'( :'( :'( :'(
[вложение удалено администратором]
-
Thanks for your message. This is a bug :) i'll fix it soon.
-
I've fixed the bug and pushed changes on github. You can check it :)
-
Thx Very Much Arin Alex. You're the best... Tq..
-
Welcome :)
-
Please Help Me Again Alex,,
Can you Add Property 'PrintAlways' in Data Header. I already Create Report using Data and Data Head, but when there's no data found, the header didn't show.
When i using SubDetail and SubDetail Header, there's a property call 'PrintAlways' that will show the data even there's no data found. Can you add this for Data Header.
Ty for your help.
[вложение удалено администратором]
-
Done :) I've pushed it on github
-
Wow,, Ty for your help Alex,, you're the best. :) :) :) :) :)
By the way, i need your help again about splittable property.
when my report is using splittable, the column 1 and column 3 did not place in what i want in my design.
in preview, the column 1 appear on top of the column 3, not below of the column 3.
please help me about thie.... thanks again
[вложение удалено администратором]
[вложение удалено администратором]
-
Can you send me your lrxml ? You can send it to my e-mail:arin_a@bk.ru
-
Dear Alex,
I already sent my sample Report about my Problem in splittable property.
Thx A lot for your help.
-
How to set/change the value for an user variable from script?
-
rabka,
I fixed problem and pushed it on github
-
Muthu Samy, I will think about it :)
-
Thank you Arin Alex!
I have added the following function in lrscriptenginemanager.cpp
QScriptValue setVariable(QScriptContext* pcontext, QScriptEngine* /*pengine*/){
QString name = pcontext->argument(0).toString();
QVariant value = pcontext->argument(1).toVariant();
ScriptEngineManager* sm = qscriptvalue_cast<ScriptEngineManager*>(pcontext->callee().data());
DataSourceManager* dm = sm->dataManager();
dm->changeVariable(name,value);
return QScriptValue();
}
And added this function in ScriptManagerConstructor as below
addFunction("setVariable", setVariable, "GENERAL", "");
It serves my purpose for now.
-
It's good variant. I'll take it :)
-
Arin Alex, My pleasure.
-
Support needed for creating reports programatically (without designer & lrxml file)
I have written a helper class for this purpose (files attached). For this helper class to work, I had to make the following changes.
a) Add the following method in ReportEngine class
PageDesignIntf* pageDesign(int index=0){
Q_D(ReportEngine);
if (d->pageCount()>index)
return d->pageAt(index);
else
return d->appendPage("page1");
}
b) add LIMEREPORT_EXPORT macro in the following class declarations
LimeReport::PageDesignIntf
LimeReport::BandDesignIntf
LimeReport::BandDesignIntf
LimeReport::DataBandDesignIntf
LimeReport::BandDesignIntf
LimeReport::BandDesignIntf
LimeReport::GroupBandHeader
LimeReport::BandDesignIntf
LimeReport::TextItem
LimeReport::ShapeItem and the like.
Is it the right approach?
[вложение удалено администратором]
-
Muthu Samy, Could you create pull request on github ?
-
Pull requests created in github
-
Thx very much Arin Alex,
Thx a lot.
Btw, may i have one question about displaying DataHeader when there're more data in data Band and displaying DataHeader when there's no data in Data Band.
i can use property that you already make using 'print always' to make DataHeader display, but if the data is more than one, the header not display in the second data Band. how can i make the header also display in second Data?
i attach my sample lrxml. thx a lot
[вложение удалено администратором]
-
It is normal behavior. DataHeader starts data group and DataFooter closes. If you want to repeat some information before each DataBand you can do it on top part of DataBand
-
Thx Arin Alex for your help,
but in my case, my client want report that repeat header when there's more than one data in dataBand and also show header when there is no data found. there's two point that my client want. i can use 'print always' to print header when no data found, but i cannot print header when data is more than one.. :'( :'( :'( .
Is there's a way to resolve this request?
thx a lot for helping me..
-
Ok i'll think about it perhaps i'll add property repeatOnEachRow to DataHeader and DataFooter
-
rabka, i've added repeatOnEachRow property to dataHeader
-
thx alot Arin Alex for your help,,
-
Support for printing to Dotmatrix printer using epson escape codes (Raw mode printing)
Lot of people are using Dotmatrix printers for printing Invoices & Roll paper printing. Regular printing through printer driver is very slow on those printers. Is there a way to print raw text with Epson Escape Codes in LimeReport?
-
Unfortunately at present LimeReport can't print on ESC/POS printers
-
Page Splitting problem in Data Band
please find attachments
[вложение удалено администратором]
-
engine->dataManager()->setReportVariable("varName","value)
Above API works correctly only for variables added during design time.
For new variables created during runtime, the newly added variable is shown in External variables section & variable does not exists error comes when we call ViewReport.
-
@seetharaman : the splitting problem is already fixed by Arin Alex on the latest version on github.
Arin, please help me again. on your latest version on Github, the $V{#PAGE_COUNT} did not display any value.
And how to make value Rp. 5.000.000,00 and convert yyyymmdd into dd Mon yyyy (ex: 31 Januari 2016).
Thx alot for your help.
[вложение удалено администратором]
-
please check my attachment file
page spliting problem
first page is print , but second page is not print
[вложение удалено администратором]
-
API for page setup (Page size, margins etc) needed from LimeReport::ReportEngine class.
-
seetharaman,
rabka, thanks for your example. I've fixed the problem.
rabka to format variables you can use the script functions such as (currencyFormat, dateFormat)
ex: $S{dateFormat(now(),"dd.MMMM.yyyy")} $S{currencyFormat(50000,"EN")}
-
seetharaman, in the second example databand is not splittable
-
thanks for your support.
thank you very much..
-
two text item in databand,
but first text item & second text item merging in 6 th page
please find attachment
[вложение удалено администратором]
-
any idea for esc/pos based printing in lime report ?
thank you
-
seetharaman, at the moment i haven't any idea about esc/pos printing :(. What about yours last reported bug i'll fix it (but it's not easy)
-
seetharaman, i've fixed the bug you can check it
-
Добрый день.
Есть пожелание...
Очень не удобно бывает, когда вырезаешь элемент, а потом вставляешь. При этом имя элемента сбрасывается, хотелось бы его сохранять.
-
JohnCS, Поправлю
-
JohnCS, Поправил, теперь если такого итема нет имя менять не будет
-
Спасибо :)
Ещё пожелалка есть :)
Удобно было бы менять местами вкладки со страницами и именовать их по своему.
-
Возможно ли реализовать в отчете область которая будет печататься всегда на последней странице(ну и в которой тоже можно использовать данные из отчета или переменные) внизу после итогов по отчету, а если не помещается то соответственно внизу на следующей странице? ну типа которую можно например оторвать, вот нарисовал пример того что пытаюсь сделать:
(http://rgho.st/66t8H7rrq/image.png)
Возможно ли?
[вложение удалено администратором]
-
Как вариант - pageFooter, а с помощью скрипта определить печататется или нет на конкретной странице.
Вроде того
$S{
if ($V{#PAGE_COUNT}==$V{#PAGE})
{
//печатаем
}
else
"";
}
В свойствах pageFooterBand выставить галку autoHeight
Но один факап есть, давно собирался Алексу задать вопрос и забывал. Щас тему создам. В данной реализации не пашет $V{#PAGE_COUNT} внутри скрипта, это просто локальный косяк в реализации ScriptEngine, я думаю.
-
С #PAGE_COUNT не получится, но что-нибудь придумаю
-
Чтож, иогда вариант иной (для версии 1.4):
1. создать в отчете переменную, скажем complete
2. сделать reportHeaderBand с autoHeight=true
поместить textItem в этот band, значение textItem следующее:
$S{
setVariable("complete",0);
"";
}
3. сделать reportFooterBand с autoHeight=true
поместить textItem в этот band, значение textItem следующее:
$S{
setVariable("complete",1);
"";
}
4. сделать pageFooterBand
поместить textItem в этот band, значение textItem следующее:
$S{
if ($V{complete}==1)
{
// печатаем
}
else
"";
}
-
Чтож, иогда вариант иной (для версии 1.4):
1. создать в отчете переменную, скажем complete
2. сделать reportHeaderBand с autoHeight=true
поместить textItem в этот band, значение textItem следующее:
$S{
setVariable("complete",0);
"";
}
3. сделать reportFooterBand с autoHeight=true
поместить textItem в этот band, значение textItem следующее:
$S{
setVariable("complete",1);
"";
}
4. сделать pageFooterBand
поместить textItem в этот band, значение textItem следующее:
$S{
if ($V{complete}==1)
{
// печатаем
}
else
"";
}
интересный вариант.
решил попробовать, скомпилировал limereports из GitHub, не могу его заставить работать, если в любом отчете есть DataHeaderBand, то он вываливается - если попытаться открыть предпросмотр.... вот скрин:
(http://rgho.st/7KDVPBJmh/image.png)
Не могу понять это бага или чего то не хватает?
[вложение удалено администратором]
-
К предыдущему посту.
Алекс, проблема скорее всего здесь:
void ReportRender::initGroups()
{
m_datasources->clearGroupFunction();
foreach(BandDesignIntf* band, m_patternPageItem->childBands()){
if (band->isFooter()) extractGroupsFunction(band);
if (band->isHeader()) dynamic_cast<IGroupBand*>(band)->closeGroup();
}
}
Результат dynamic_cast не проверяется.
-
Да, JohnCS, видимо, прав.
Код
void ReportRender::initGroups()
{
m_datasources->clearGroupFunction();
foreach(BandDesignIntf* band, m_patternPageItem->childBands()){
if (band->isFooter()) extractGroupsFunction(band);
if (band->isHeader())
{
IGroupBand *groupBand=dynamic_cast<IGroupBand*>(band);
if (groupBand)
groupBand->closeGroup();
}
}
}
решает проблему
-
Viktor, JohnCS, Subst, Спасибо поправлю.
-
Viktor, Добавил новый вид банда Tear-off Band, пушнул на гитхаб
-
Алекс, новый банд...
название что-то вроде "Разрыв данных", а что этот банд делает?
-
Subst, Да собственно то, что Viktor просил :). Просто банд, который печатается в конце отчета внизу страницы.
-
понял.. тогда "Отрыв данных" :)
-
Viktor, Добавил новый вид банда Tear-off Band, пушнул на гитхаб
СПАСИБО за полезнейший банд!!! Все работает!
-
Привет всем!
Версия 1.4_QJSE с git. Один момент.
При создании отчетов сыпет в консоль ошибки связянные с профилем в png
"libpng warning: iCCP: known incorrect sRGB profile", мелочь конечно, но выглядит не очень. У себя пролечил по советам отсюда
http://stackoverflow.com/questions/22745076/libpng-warning-iccp-known-incorrect-srgb-profile (http://stackoverflow.com/questions/22745076/libpng-warning-iccp-known-incorrect-srgb-profile). Может есть смысл в исходниках провести эту процедуру?mogrify *.png
И...Пожелание есть: очень ххочется экспорт отчета в html!
З.Ы.Походу на диалогами идет работа? Демо с диалогом ругается при печати, выскакивает сообщение "TypeError: Cannot read property 'text' of undefined" , может я чего-то не так делаю?
-
o_m, Пофиксил иконки и диалоги. Для QJSEngine пришлось дочерние компоненты диалога руками регать, хотя по докам должно быть автоматом.
-
Благодарю за труды!!!
-
Здравствуйте. Пытаюсь использовать ваш продукт в проекте QT, но проблема в том, что при попытке объявить объект класса
LimeReport::ReportEngine m_report;
вылезает ошибка
QPrinter: Must construct a QCoreApplication before a QPrinter
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Собирал библиотеку из исходников и пытался скомпилировать совершенно новый проект с ее использованием под QT 5.9.1, Qt Creator 4.3.1, windows 7 x64
Проект во вложении
-
ppa32 Приветствую
Сборка debug?
Если сборка отладочная а dll релизная, то будет вылетать такое сообщение.
Это обсуждалось здесь: http://limereport.ru/forum/index.php?topic=137.msg974#msg974
-
Да, это помогло, спасибо. Но теперь другая проблема: при попытке открыть отчет из программы появляется ошибка
QWidget: Cannot create a QWidget without QApplication
Приложение на QML, соответственно, QApplication не используется. А вместо него используется QGuiApplication.
Возможно как - то открыть Limereport в такой программе?
-
Поменяйте QGuiApplication на QApplication и #include <QGuiApplication> на #include <QApplication>
должно заработать
-
Добрый день!
Не знаю обсуждалось здесь или нет. А есть ли возможность при текущей версии библиотеки генерировать диаграмму?
Если нет, то у Вас в планах такая функция вообще предполагалась?)
Заранее спасибо.
-
Приветствую!
На гитхабе в ветке девелопмент есть chartitem. Можете потестить :)
-
Окей. Сейчас попробую ;)
-
Здравствуйте. При попытке сборки возникает ошибка:
[sub-3rdparty-make_first-ordered] Error 1
версия 1.4.7, Win7, qt 5.9.1, creator 4.3.1
Как можно исправить?
-
ppa32 Предельно мало информации об ошибке. Можно более развернутое сообщение от компилятора.
-
11:19:02: Выполняются этапы для проекта limereport...
11:19:02: Запускается: «C:\QT\Qt5.9.1\5.9.1\mingw53_32\bin\qmake.exe» C:\ppa32\Programming\temp\2\LimeReport-1.4.7\limereport.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
Project MESSAGE: Debug
Project MESSAGE: uitools
11:19:02: Процесс «C:\QT\Qt5.9.1\5.9.1\mingw53_32\bin\qmake.exe» завершился успешно.
11:19:02: Запускается: «C:\QT\Qt5.9.1\Tools\mingw530_32\bin\mingw32-make.exe» qmake_all
ќв Їа®Ја ¬¬ § Ў«®ЄЁа®ў ЈагЇЇ®ў®© Ї®«ЁвЁЄ®©. ‡ ¤®Ї®«ЁвҐ«мл¬Ё ᢥ¤ҐЁп¬Ё ®Ўа й ©вҐбм Є бЁб⥬®¬г ¤¬ЁЁбва в®аг.
Makefile:37: recipe for target 'sub-3rdparty-qmake_all' failed
mingw32-make: *** [sub-3rdparty-qmake_all] Error 1
11:19:03: Процесс «C:\QT\Qt5.9.1\Tools\mingw530_32\bin\mingw32-make.exe» завершился с кодом 2.
Ошибка при сборке/установке проекта limereport (комплект: Desktop Qt 5.9.1 MinGW 32bit)
Во время выполнения этапа «qmake»
11:19:03: Прошло времени: 00:01.
Вот такое пишет
-
файлик Makefile можно глянуть?
-
Вот
-
ќв Їа®Ја ¬¬ § Ў«®ЄЁа®ў ЈагЇЇ®ў®© Ї®«ЁвЁЄ®©. ‡ ¤®Ї®«ЁвҐ«мл¬Ё ᢥ¤ҐЁп¬Ё ®Ўа й ©вҐбм Є бЁб⥬®¬г ¤¬ЁЁбва в®аг.
Перевожу: "Эта программа заблокирована групповой политикой. За дополнительными сведениями обращайтесь к системному администратору.
-
Алекс, я бы предположил, что у софтинам, запущенным от имени pPa32 нет права на диске C создавать директории
@if not exist 3rdparty\ mkdir 3rdparty\ & if not exist 3rdparty\ exit 1
cd 3rdparty\ && $(QMAKE) -o Makefile C:\ppa32\Programming\temp\2\LimeReport-1.4.7\3rdparty\3rdparty.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
cd 3rdparty\ && $(MAKE) -f Makefile qmake_all
твои мысли?
To Ppa32: попробуй сборку от имени администратора делать
-
Да, это помогло, спасибо!
-
Обращайся!
-
А можно ли такую фиксу внести в lrscriptenginemanagerintf.h:
#if defined(ALLOW_USE_QTSCRIPT)
#include <QtScript/QScriptEngine>
#endif
namespace LimeReport{
class IScriptEngineManager{
public:
#if defined(ALLOW_USE_QTSCRIPT)
virtual QScriptEngine* scriptEngine() = 0;
virtual bool addFunction(const QString& name, QScriptEngine::FunctionSignature function,
const QString& category="", const QString& description="") = 0;
virtual bool addFunction(const QString &name, const QString& script,
const QString &category="", const QString &description="") = 0;
virtual const QString& lastError() const = 0;
#endif
virtual ~IScriptEngineManager(){}
};
} //namespace LimeReport
-
ты имеешь ввиду разграничения по признаку разрешены/запрещены использования скриптов?
-
Сам LimeReport пусть поддерживает. Только в этом хеадере.
У нас проект не использует модуль QtScript. Проект не собирается из-за этого. Было бы идеально использовать QML ).
Но вроде уже решили что подключим модуль QtScript.
Но QtScript объявлен deprecated. По хорошему нужно использовать QJsEngine.
-
AAL В новой версии (ветка develop на гитхабе) можно переключать скриптовые движки и по умолчанию limereport собирается с QJSEngine вместо QtScript. Исправления вносить не вижу особого смысла, потому как если использовать limereport, он все равно потянет QtScript.
При большом желании с вашей стороны могу сделать так :)
#ifndef DONT_USE_QTSCRIPT
#include <QtScript/QScriptEngine>
#endif
namespace LimeReport{
class IScriptEngineManager{
public:
#ifndef DONT_USE_QTSCRIPT
virtual QScriptEngine* scriptEngine() = 0;
virtual bool addFunction(const QString& name, QScriptEngine::FunctionSignature function,
const QString& category="", const QString& description="") = 0;
virtual bool addFunction(const QString &name, const QString& script,
const QString &category="", const QString &description="") = 0;
virtual const QString& lastError() const = 0;
virtual ~IScriptEngineManager(){}
#endif
};
-
Какую ветку лучше брать, develop или master?
Если в develope используется QJsEngine, тогда я туда. )
Спасибо )
-
В принципе develop достаточно стабильная версия. При этом в ней довольно много нововедедий. Единственно руки не доходят их описать :) Из основного:
1 смена скриптового движка
2 возможность собрать рендер без дизайнера
3 встроенный редактор диалогов
4 возможность обрабатывать события beforerender, afterrender для бандов в скрипте
5 поддержка много язычных отчетов
6 модифицирован редактор скриптов
7 можно создавать оглавление для отчета
8 можно использовать агрегатные функции в заголовках данных
9 можно посчитать агрегаты по странице в футер страницы
10 появился chartitem
Фух из основного вроде все :)
-
https://drive.google.com/open?id=1sgF2n-z2GVs_dWA7L1rurFTUWMw0bFYJ
Бесконечный цикл!
-
AAL Можете демку прислать? Можно просто значение, которое находится в переменной context
-
AAL Поправил, пушнул.
-
Использую функцию line() для отображения текущей строки.
Когда ставлю columnCount = 2, columnFillDirection = Horizontal,
то у меня индекс строк идет с права на лево. Это ошибка или фича? :)
-
AAL Спасибо, не видел. Пофиксил.
-
Окно предпросмотра называется Предосмотр.
Так задумывалось или опечатка?
-
MultiMote
Опечатка :) Поправил
-
мой косяк :)
Алекс невиновен...
-
Доброго времени суток!
Обнаружен баг.
При использовании в отчётах группировок с вложенностью более 2х, неверно отображаются объекты
GroupBandFooter. Они попадают в начало следующей группы.
Во вложении шаблона отчёта, таблица с тестовыми данными и PDF результат выполнения.
Спасибо.
-
Roman
Спасибо за пример гляну, поправлю :)
-
Roman
Пофиксил.
-
Спасибо.
-
can anybody help me on how resolve: [ts] Error 1 when I tried to build Lime Report on Qt creator
-
solomon78
Hi! It seems like something wrong with ts files.
Could you send me messages from the compile console window?
-
Добрый день! Заметил странный эффект отрисовки. При установке свойсва autoHeight элемента DataBand или в случае если нижний край элемента TextItem совпадает с нижним краем DataBand, рамка TextItem отрисовывается
некорректно(без нижней грани) на последней строке. Это же наблюдается и для других бендов.
Скрин прилагаю.
-
Данное поведение можно победить если выставить свойство keepBottomSpace у банда
-
Здравствуйте, а можно ли сделать так, чтобы в диалоге редактирования переменной, поле содержимого было многостроковым?
-
Добрый день! Заметил странный эффект отрисовки. При установке свойсва autoHeight элемента DataBand или в случае если нижний край элемента TextItem совпадает с нижним краем DataBand, рамка TextItem отрисовывается
некорректно(без нижней грани) на последней строке. Это же наблюдается и для других бендов.
Скрин прилагаю.
Это проблема наложения фона ячейки/бэнда, http://limereport.ru/forum/index.php?topic=265.0 (http://limereport.ru/forum/index.php?topic=265.0).
Как вариант - сделать фон прозрачным.
-
MultiMote
Думаю, что в, принципе, препятствий к этому нет :)
-
MultiMote
Прикрутил в develop ветке
-
Падает программа при смене шаблона, в методе "void PageDesignIntf::setCurrentPage(PageItemDesignIntf* currentPage)".
Падает когда запускаю пример demo_r2, в области отображения отчёта прокручиваю до последней страницы и меняю шаблон с "categories" на "change_item_from_script"
-
Shookk69, Спасибо, пофиксил.
-
Доброго времени суток. Обновившись с версии 1.4.107 до 1.5.13 заметил приличную такую потерю производительности. Отчёт порядка 400 страниц формировался в старой версии 14 секунд, в новой - 33. Версия Qt - 5.6.3, Windows, MinGW32 6.2.0.
Так и должно быть?
В связи с этим, спрошу о возможности вывода прогресса печати в PDF, так как при печати данного отчёта в PDF, программа намертво зависает на две с половиной минуты, что не есть хорошо.
-
Алекс, добрый день.
При переключении на вкладку "Скрипт" дерево объектов в структуре отчета очищается.
Так и должно быть?
Было бы удобно перетаскивать объекты из дерева прямо в скрипт.
Спасибо.
-
MultiMote,
Так и должно быть?
Процесс рендеринга в 1.5 несколько сложнее чем в 1.4, возможно. с этим связано увеличение времени генерации.
Погоняю более внимательно в профайлере, возможно, получится повысить скорость. Спасибо, что обратили моё внимание на это.
По поводу прогресса печати, могу прикрутить сигнал на каждую страницу, отправленную в принтер или PDF, подойдет?
-
JohnCS,
Приветствую!
Это нормальное поведение :) Дерево объектов отражает структуру выбранной странницы отчета,
а скрипт, соответственно, не страница :) Можно было бы оставлять структуру объектов, и я даже думал об этом,
но на данный момент не реализована возможность отображать структуру всех страниц в отчете, и для того,
что бы не вводить людей в заблуждение, структура просто не показывается :)
-
MultiMote, Создал ветку speed_up на github.
Можете проверить будет ли ускорение в ваших отчетах или нет ?
-
Arin Alex, сделал небольшой бенчмарк :)
1.4.134:
Формирование -> предпросмотр = 17 секунд
Формирование -> pdf = 39 секунд
1.5.13:
Формирование -> предпросмотр = 35 секунд
Формирование -> pdf = 224 секунд
speed_up:
Формирование -> предпросмотр = 30 секунд
Формирование -> pdf = 213 секунд
Насчёт сигнала - было бы отлично. И если возможно, как-то получить итоговое количество страниц при печати.
-
MultiMote,
А можно в меня отчет с тестовыми данными как-нибудь кинуть?
Очень мене интересно где у меня такой провал образовался.
-
Arin Alex, хорошо, завтра что-то соображу.
-
MultiMote, Ок, спасибо, буду ждать.
-
Arin Alex, вот, как-то так.
-
MultiMote, Поковырял малость лайм :)
Прикрутил к ReportEngine сигналы:
void printingStarted(int pageCount);
void printingFinished();
void pagePrintingFinished(int index);
Добавил слот:
void cancelPrinting()
Немного ускорил процесс печати
Добавил возможность, в случае если банд рисует строку в таблице, выставить:
autoHeight = true, keepBottomSpace = false, keepTopSpace = false и shiftItems = -1
в этом случае элементы будут наезжать на верхнюю строку и получится разделительная линия толщиной в 1 пиксель.
Еще для рисования таблиц, мне кажется, довольно удобно использовать горизонтальную группировку.
-
Спасибо за нововведения.
Насчёт смещения, а что поменялось с версии 1.4? Насколько понимаю, там не было таких сложностей с линиями таблицы, ячейки сами наезжали на предыдущие. Или это был баг? :)
Насчёт группировки спасибо, действительно удобно. Просто я шаблоны отчётов создавал ещё до этой возможности и почти их не редактировал после этого. Только жаль, что шапку, данные и подвал таблицы нельзя синхронизировать по ширине с помощью таких групп.
Насчёт скорости печати - действительно, стало быстрее. Только вот как-то странно это работает, по мере печати (PDF) постепенно очищается окно просмотра :)
Да, и ещё. Версии 1.5.16 - 1.5.18 компилируются как 1.5.15 (в common.pri не поправлено).
-
MultiMote, Немного поправил процесс печати, теперь не должны страницы пропадать.
Насчёт смещения, а что поменялось с версии 1.4?
Смысл нововведений в том, что теперь горизонтальную группировку можно бросать где угодно на банде,
все лишнее обрежется и куда нужно сдвинется. Но можно и как раньше, по старике, ручками :)
Только жаль, что шапку, данные и подвал таблицы нельзя синхронизировать по ширине с помощью таких групп
Можно подумать на предмет залинкованных итемов
-
Мне кажется, стоит в предпросмотре дизайнера выводить прогресс печати (во всяком случае, для PDF), так как она теперь происходит в фоне и неясно сколько прошло и когда процесс завершается (разве что, смотреть на загрузку процессора :) ).
-
Заметил пару нюансов с layout, при удалении layout (вертикальный или горизонатльный, не важно какой) элементы находящиеся в layout меняют свои координаты, ширину и длину, уползают вверх так сказать. Еще раньше в версиях 1.4.х когда менял свойство itemAlign у layout на ParentWidthItemAlign, layout растягивался на всю ширину страницы и элементы находящиеся в layout меняли ширину на одинаковую в зависимости от ширины layout. В новой версии при смене свойства itemAlign у layout на ParentWidthItemAlign меняет ширину только последний элемент находящийся в layout.
-
MultiMote, Поправил сигналы времени печати. Прикрутил индикаторы рендеринга в окно дизайнера отчетов и
индикатор печати в окно предварительного просмотра.
Shookk69, Поправил баг с удалением группировки.
По поводу изменения размеров элементов внутри группы при изменении размера группы.
Были нарекания на равномерное распределение пространства в момент изменении размера группировки,
по этому было принято решение изменять размер только последнего элемента.
Если нужно, могу прикрутить свойство "равномерно распределять приращение размера".
-
В функции bool ScriptHighlighter::isKeyWord(const QString& word) похоже лишний -1:
bool ScriptHighlighter::isKeyWord(const QString& word)
{
for (int i = 0; i < KEYWORDS_COUNT-1; ++i){
if (QLatin1String(keywords) == word) return true;
}
return false;
}
Должно быть
for (int i = 0; i < KEYWORDS_COUNT; ++i){
Иначе последний элемент массива keywords не проверяется.
-
Konstantin, Спасибо, поправил :)
-
Если при добавлении нового datasource`а поставить галку "Subdetail" и выбрать "Filter mode" галка становится неактивной. И остается таковой даже при смене обратно на "Subquery mode".
-
Пробовал собирать с помощью CMake, а тут вот незадача. Может можно поправить?
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
CMake Error at C:/Program Files/CMake/share/cmake-3.19/Modules/FindPackageHandleStandardArgs.cmake:218 (message):
Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR)
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.19/Modules/FindPackageHandleStandardArgs.cmake:577 (_FPHSA_FAILURE_MESSAGE)
C:/Program Files/CMake/share/cmake-3.19/Modules/FindPNG.cmake:156 (find_package_handle_standard_args)
CMakeLists.txt:16 (find_package)
-
Доброе время суток!
В примерах есть программа console, хотел как образец его использовать,
нужно сервис сделать для Windows по печати отчетов.
используется Qt \Qt\Qt5.7.1\5.7\msvc2015_64\
LR последний.
сборка примера проходит без ошибок, но вот при запуске программа крэшится.
Куда копать? Мой косяк или какая то проблема в библиотеке?
-
Vermilion, Из под креатора если запускать тоже крэшится? Какое сообщение об ошибке?
-
Я к сожалению не использую креатор, сборку делаю в командной строке в окружении MS Visual Studio 2015
в этом же окружении собран сам LimeReport
Но если проект console открыть в VS2015 и под ее управлением запустить приложение, то видна ошибка:
===
Вызвано исключение: нарушение доступа для чтения.
QGuiApplicationPrivate::platformIntegration(...) вернул nullptr.
Если для этого исключения имеется обработчик, выполнение программы может быть продолжено безопасно.
===
Приложение же консольное, использует только QCoreApplication, а что то в библиотеке хочет QGuiApplication
Я думаю, что если в коде main.cpp заменить QCoreApplication на QApplication, то ошибка уйдет,
но это уже будет не консольное приложение а какой то суррогат :-)
-
Vermilion, В силу того, что limereport был разработан для встраивания в пользовательские приложения, для рендеринга используется сцена со всеми вытекающими :).
-
Arin Alex, понял, спасибо!
В принципе, приложение в режиме псевдо-консоли работает как сервис, но бывает трабл после перезагрузки, когда сервисы стартуют, что то в среде Windows еще не готово и приложение умирает с ошибкой в Qt5Gui.dll
-
Arin Alex, доброе утро(судя по времени форума)!
Нашел баг:
Поле обрезает нижнюю рамку бэнда:
- Добавляем бэнд
- Добавляем текстовое (можно и другие, но не со всеми пробовал) поле на бэнд
- В настройках бэнда выставляем галочку на all border
- Рендерим и в превью видим обрезание рамки бэнда под полем
От этого можно избавиться некоторыми способами:
- Слегка передвинуть поле выше (работает не всегда)
- Убрать галочку с keepTopSpace в настройках бэнда
- Поставить галочку на keepBottomSpace в настройках бэнда (но тогда приходится самому выставлять расстояние до нижней границы бэнда)
Исходя из последний двух вариантов складывается ощущение, что собака порылась во время рендера при выставлении отступа от поля до нижней границы бэнда и произошла такая оказия.
Попытался добиться похожего результата с верхней границей - не получилось.
В закрепе все необходимые скриншоты
-
Всем привет.
Пыталя добиться эффекта, как показано на скрине во вложении.
Наткнулся на странное поведение текстового блока: если поставить отступы (margins) = 0 то фактически текст все равно имеет отступы.
Посмотров исходники заметил такую штуку:
//lrtextitem.cpp
int TextItem::fakeMarginSize() const{
return marginSize()+5;
}
Не могу понять цель добавления хардкодно величины в 5px.
-
Приветствую, сейчас уже трудно вспомнить причину появления этого метода :) Скорее всего, этот метод надо просто удалить, возможно это результат каких-то экспериментов. Будет время гляну.
-
Ок, поправлю и отправлю в репозиторий
-
Добрый день!
Столкнулся с проблемой.
Band с рамкой, автовысотой и опцией keepBottomSpace, на нем textItem с автовысотой. Если текст небольшой то рамка бэнда рисуется по размеру текста. Если текст большой, то бэнд расширяется на вторую страницу и рамка рисуется до низа страницы (как мне и нужно) но добавляется третья пустая страница.
Мне хотелось бы чтобы рамка всегда рисовалась до низа страницы (до pageFooter) и не появлялась пустая страница.
Шаблон отчета
-
statim, Увидел, будет время, поправлю
-
Добрый день, не работает метод setCurrentReportsDir().
Указываю где надо сохранять отчеты, но сохраняет в директории где лежит екзешник моей программы.
Неудобно(((
-
Leeroy77, Поправил
-
Arin Alex, скопировал последнюю версию с https://github.com/fralx/LimeReport/tree/master, скомпилировал, получившиеся библиотеки добавил в свой проект, но метод setCurrentReportsDir() так и не работает(
-
Leeroy77, У меня вроде нормально все. Во вложении демка как это у меня выглядит.
-
Arin Alex, теперь понял, если не подгружаешь заранее форму отчета "report.lrxml", указываешь где сохранить setCurrentReportsDir(), то метод работает. Если подгружаешь форму отчета, или создаешь ее, а потом сохраняешь отчет в *.pdf то метод уже не работает. Удобно как раз отчеты в формате *.pdf в отдельном месте сохранять. Если поправите было бы отлично!)
-
Arin Alex, Я немного поправил 2 метода в lrpreviewreportwidget.cpp, все заработало, указываю методом setCurrentReportsDir(), рабочую директорию для сохранения отчетов в .*pdf, туда и сохраняет. Скриншоты во вложении. Желательно в исходниках тоже поправить.
upd: Arin Alex, информация по донатам устарела, оказывается Яндекс денег уже нет, они переименовались в https://yoomoney.ru/. Благодарю за хорошую библиотеку.
-
Leeroy77, Спасибо за донат, не частое явление, поэтому я за этим не слежу :) По поводу директории, я просто думал над тем, чтобы добавить еще один параметр например exportDirectory, потому как currentReportDir изначально была предназначена для указания директории откуда брать шаблоны отчетов. Я думаю, что второй параметр будет более правильным решением.
-
Leeroy77, Добавил bool setDefaultExportDir(const QString& dirname) теперь можно указать куда делать выгрузку по умолчанию
-
Arin Alex, благодарю, пересобрал LimeReport, теперь использую bool setDefaultExportDir(const QString& dirname).