LimeReport Forum
General Category | Основное => Discussion | Обсуждение => Topic started by: ldir on August 12, 2016, 01:30:02 pm
-
Здравствуйте!
Возникла необходимость перевести дату в формат, например "12 августа 2016". Функция dateFormat с параметром "dd MMMM yyyy" выдает "12 Август 2016". Быть может я неправильно задаю формат? Подскажите как правильно. Если же функция этого не умеет, то чем ее можно заменить? И еще вопрос. Где можно подробнее почитать про скрипты? А то пробовал ради эксперимента воткнуть в скрипт вот это: var docDate = new QDate(2016,8,12); и получил ReferenceError: Can't find variable: QDate.
С уважением, Иван.
-
Приветствую!
dateFormat() это обертка вокруг QLocale().toString(value.toDate(),format) и под виндами длинный формат месяца выдает коряво :(
Вы можете написать собственную функцию для форматирования даты и подключить её к scriptEngine.
вот пример функции dateFormat:
QScriptValue dateFormat(QScriptContext* pcontext, QScriptEngine* pengine){
QVariant value = pcontext->argument(0).toVariant();
QString format = (pcontext->argumentCount()>1)?pcontext->argument(1).toString().toLatin1():"dd.MM.yyyy";
QScriptValue res = pengine->newVariant(QLocale().toString(value.toDate(),format));
return res;
}
подключается функция следующим образом
report->scriptManager()->addFunction("dateFormat",dateFormat,"DATE&TIME", "dateFormat(\""+tr("Value")+"\",\""+tr("Format")+"\")");
Только, надо забрать свежие исходники с github ;) я их поправил чтоб функция нормально подключалась
Где можно подробнее почитать про скрипты? А то пробовал ради эксперимента воткнуть в скрипт вот это: var docDate = new QDate(2016,8,12); и получил ReferenceError: Can't find variable: QDate.
Скрипты описаны в документации к Qt (QScriptEngine). QDate не прикручен к скриптовому движку :)
-
Спасибо большое!
С датой все получилось. Теперь жду версию 1.4. Я правильно понял, в одной из тем форума были обещаны многостраничные документы?
-
Да в версии 1.4 добавлено:
Многостраничные отчеты
Возможность редактирования сформированного отчета
Инициализационный скрипт
Возможность использовать диалоги
ну и так по мелочи :)
-
Arin Alex, чудесно.
Да, хочу поблагодарить за такую полезную программу. До этого пользовался обычными html документами - не очень удобно, вечно какие-то грабли были.
-
А я вообще в сам отчет запихал примерно следующее для таких случаев, дабы максимально разделить "ядро" программы и отчетную часть
$S{
var months=new Array("","января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
var day=dateFormat($D{students.diploma_date},"dd").toString();
var month=parseInt(dateFormat($D{students.diploma_date},"MM"),10);
var year=dateFormat($D{students.diploma_date},"yyyy").toString();
day+" "+months[month]+" "+year+" года";
}