LazReport

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: LazReport

Сообщение xcod » 07.11.2012 16:53:53

дайте тест проект
xcod
постоялец
 
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Re: LazReport

Сообщение elshir » 05.01.2013 01:01:59

нужен совет:

основой отчета служат три запроса при этом любой из них может быть пустым, или два из трех пустые

вопрос : как сделать чтоб на месте данных из пустого запроса отображался следующий "непустой";
будет ли отображаться шапка пустого запроса ?

прошу прощения, если вопрос покажется не совсем понятным
elshir
незнакомец
 
Сообщения: 9
Зарегистрирован: 09.12.2012 21:08:14

Re: LazReport

Сообщение amateur » 05.01.2013 19:17:49

Композитный отчет?
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: LazReport

Сообщение elshir » 06.01.2013 00:13:22

ну я б так не сказал,

отчет один, никакие другие он в себя не включает

хотя, это может быть идеей ..
elshir
незнакомец
 
Сообщения: 9
Зарегистрирован: 09.12.2012 21:08:14

Re: LazReport

Сообщение ssadragon » 30.04.2013 13:41:29

Ошибка!!! :!:
В модуле LR_Class на строке 11658 - tkFloat : SetFloatProp(aObj,Prop,StrToFloat(aValue));
вылазит ошибка "EConvertError" c сообщением "1.5 is an invalid float".
Предыстория: В дизайнере добавляю объект Barcode, делаю настройку и устанавливаю свойство ZOOM в значение "1,5" (именно запятая иначе не дает) сохраняю отчет,
а при открытии отчета валится выше описанная ошибка.
Решил это дело таким способом (наверное не очень красивым, но у мну работает :) ) -
tkFloat: SetFloatProp(aObj,Prop,StrToFloat(StringReplace(StringReplace(aValue, ',', FormatSettings.DecimalSeparator, [rfReplaceAll, rfIgnoreCase]), '.', FormatSettings.DecimalSeparator, [rfReplaceAll, rfIgnoreCase])));

Разделителем в региональных настройках стоит запятая.
ssadragon
постоялец
 
Сообщения: 148
Зарегистрирован: 03.12.2012 20:21:35

Re: LazReport

Сообщение Padre_Mortius » 30.04.2013 16:44:05

ssadragon, это проблема как раз вашей программы, а не LazReport. Приведение формата чисел к региональным настройкам задача для приложения, а не компонента.
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: LazReport

Сообщение ssadragon » 30.04.2013 19:24:34

Padre_Mortius Может тогда подскажете как мне можно повлиять на данную ситуацию, чтобы данная ошибка впредь не имела место. :D
ssadragon
постоялец
 
Сообщения: 148
Зарегистрирован: 03.12.2012 20:21:35

Re: LazReport

Сообщение alexs » 03.05.2013 00:24:39

Поставить разделитель точку вместо запятой?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: LazReport

Сообщение ssadragon » 03.05.2013 15:31:17

alexs, хм я ж написал "свойство ZOOM в значение "1,5" (именно запятая иначе не дает)"
В инспекторе объектов дизайнера в свойстве ZOOM дает ставить и запятую и точку, но при применении этого свойства (например нажатием ENTER) со значением с точкой ругается Invalid float, со значением с запятой применяет, объект штрихкода зуммируется все сохраняется, но при просмотре отчета ошибка Invalid float.
При двойном нажатии на объекте появляется окно "Редактор штрих-кода". В этом окне свойство "Масштаб" по умолчанию имеет значение "1,0", но поставить запятую юзеру вообще не дает, только точку и при нажатии на ОК не происходит зуммирование компонента BARCODE, а при повторном открытии этого окна (двойным кликаньем на компоненте) свойство "Масштаб" установлено в "1,0". И все повторяется как и в прошлом варианте "со значением с запятой применяет, объект штрихкода зуммируется все сохраняется, но при просмотре отчета ошибка Invalid float." :(
ssadragon
постоялец
 
Сообщения: 148
Зарегистрирован: 03.12.2012 20:21:35

Re: LazReport

Сообщение ssadragon » 06.05.2013 11:36:52

Здрасте!!! :) Эт опять я.
Вообщем нашел где в модуле (LR_Class) косяк (на мой взгляд).
В функции GetSaveProperty (что на 11634 строке) происходит такая фигня:
Код: Выделить всё
tkFloat: begin
           OldSep := DecimalSeparator;
           DecimalSeparator := '.';
           Result := FloatToStr(GetFloatProp(aObj,Prop));
           DecimalSeparator := OldSep;
         end;

Что на мой взгляд не есть хорошо. Ну например у меня многопоточное приложение и в этот самый момент я тоже начинаю обращаться к DecimalSeparator`у и мой поток ловит "is an invalid float" (ну или что-нибудь др., в общем не очень хорошо будет).
Моё решение выглядит след. образом:
Код: Выделить всё
tkFloat: begin                                       
            s := FloatToStr(GetFloatProp(aObj,Prop));
            s := StringReplace(s, ThousandSeparator, '', [rfReplaceAll, rfIgnoreCase]);
            Result := StringReplace(s, DecimalSeparator, '.', [rfReplaceAll, rfIgnoreCase]);
         end;

Добавил переменную (в Var s: String;), ну так чтоб не громоздить. Удаляю на всякий случай разделитель групп разрядов. Меняю региональную настройку на точку (раз она так нужна).
А при восстановлении (в функции RestoreProperty (что на 11685 строке того же модуля)) проделываю примерно все также в обратную сторону:
Код: Выделить всё
tkFloat: begin
            s := StringReplace(aValue, '.', DecimalSeparator, [rfReplaceAll, rfIgnoreCase]);
            SetFloatProp(aObj,Prop,StrToFloat(s));
          end;

Ну вот как бы моё решение, сильно не пинайте, но мне кажется оно будет логичнее, ну и без "is an invalid float".
ssadragon
постоялец
 
Сообщения: 148
Зарегистрирован: 03.12.2012 20:21:35

Re: LazReport

Сообщение alexs » 06.05.2013 19:46:13

ssadragon
LazReport абсолютно не многопоточный.
В нём куча плохого кода.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: LazReport

Сообщение ssadragon » 06.05.2013 19:55:49

alexs писал(а):LazReport абсолютно не многопоточный.

А я и не пишу что LazReport многопоточный, я пишу
Ну например у меня многопоточное приложение...


alexs писал(а):В нём куча плохого кода.

Ну а вы как-то можете посодействовать продвижению моего фикса в Trunk LazReport`a.
Как я понял вас там уже знают.
ssadragon
постоялец
 
Сообщения: 148
Зарегистрирован: 03.12.2012 20:21:35

Re: LazReport

Сообщение Ustas » 21.06.2013 10:58:10

Собственно, вопрос не совсем по Lazreport`у... Вроде бы попадалась информация - но что то не найду...
Итак, как можно скомпилировать проект, что бы репорты были в исполняемом файле, и как к ним потом добраться. В Delphi был редактор русурсов, а как в Lazarus это делается?
Ustas
постоялец
 
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: LazReport

Сообщение SeZuka » 21.06.2013 16:13:32

Ну как бы создай для каждого репорта свой TFRReport и размести на форме, включаешь у каждого свойство StoreInForm и все сохранится в ресурсе формы, потом просто вызываешь нужный.
SeZuka
постоялец
 
Сообщения: 209
Зарегистрирован: 05.09.2012 14:58:05

Re: LazReport

Сообщение Ustas » 24.06.2013 20:05:22

SeZuka, Благодарю!
Ustas
постоялец
 
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Рейтинг@Mail.ru