LazReport
Модератор: Модераторы
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
lazarus/components/lazreport/source/addons/pdfexport/lazreportpdfexport.lpk не рабочий. Не умеет работать с крилическими кодировками.
Он вообще не умеет работать с не латинскими буквами.
Он вообще не умеет работать с не латинскими буквами.
Добрый день. Подскажите можно как можно форматировать текст в отчете, например в блоке, чтобы был обычный текст и выделенный.
Спасибо.
Спасибо.
- *Rik*
- постоялец
- Сообщения: 453
- Зарегистрирован: 19.04.2011 12:18:51
- Откуда: Урал
- Контактная информация:
1. Походу группировка для Detail Data не работает...?
2. Пытаюсь при формировании табличной части выделить строки, в которых количество более чем N жирным.
Скрипт
Ни чего не происходит. Как правильно?
2. Пытаюсь при формировании табличной части выделить строки, в которых количество более чем N жирным.
Скрипт
Код: Выделить всё
if [DM.TABLE."KOLVO"] > 1 then
Memo22.Font.Style.fsBold := True
else
Memo22.Font.Style.fsBold := False; Ни чего не происходит. Как правильно?
alexs писал(а):Как и обещал - выкладываю ковертер файлов FastReport 2.5 - .fr3 в формат LazReport-а.
Для тех кто не в курсе - FR 2.5 сохраняет в fr3 формат для последующей загрузки в FR3 и выше.
http://w7site.ru/fpc/fr2lr_cnv.rar - скомпилированный модуль для windows.
http://w7site.ru/fpc/fr2lr.rar - Исходные тексты.
Не качается, битая ссылка. Можно перезалить.
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Готово
Используй условное выделение - есть инструмент (кнопка) в дизайнере.
*Rik* писал(а):2. Пытаюсь при формировании табличной части выделить строки, в которых количество более чем N жирным.
Используй условное выделение - есть инструмент (кнопка) в дизайнере.
Добрый день.
Получаю данные из БД FB (поле числовое) в Lazreporte выбирают формат число с разделителями разрядов, т.е. что бы выводилось 1 523,55 р.. Но при выводе получаю 1?523,55 р. где разделитель разрядов пробел выводиться знак вопроса "?". Как правильно выводить число с разрядами.
Спасибо.
Получаю данные из БД FB (поле числовое) в Lazreporte выбирают формат число с разделителями разрядов, т.е. что бы выводилось 1 523,55 р.. Но при выводе получаю 1?523,55 р. где разделитель разрядов пробел выводиться знак вопроса "?". Как правильно выводить число с разрядами.
Спасибо.
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Код: Выделить всё
procedure ConvetToUTF8LocalConst;
var
i:integer;
begin
DefaultFormatSettings.ShortMonthNames[1]:='Январь';
DefaultFormatSettings.ShortMonthNames[2]:='Февраль';
DefaultFormatSettings.ShortMonthNames[3]:='Март';
DefaultFormatSettings.ShortMonthNames[4]:='Апрель';
DefaultFormatSettings.ShortMonthNames[5]:='Май';
DefaultFormatSettings.ShortMonthNames[6]:='Июнь';
DefaultFormatSettings.ShortMonthNames[7]:='Июль';
DefaultFormatSettings.ShortMonthNames[8]:='Август';
DefaultFormatSettings.ShortMonthNames[9]:='Сентябрь';
DefaultFormatSettings.ShortMonthNames[10]:='Октябрь';
DefaultFormatSettings.ShortMonthNames[11]:='Ноябрь';
DefaultFormatSettings.ShortMonthNames[12]:='Декабрь';
for i:=1 to 12 do
DefaultFormatSettings.LongMonthNames[i] := DefaultFormatSettings.ShortMonthNames[i];
DefaultFormatSettings.LongDayNames[1]:='Воскресенье';
DefaultFormatSettings.LongDayNames[2]:='Понедельник';
DefaultFormatSettings.LongDayNames[3]:='Вторник';
DefaultFormatSettings.LongDayNames[4]:='Среда';
DefaultFormatSettings.LongDayNames[5]:='Четверг';
DefaultFormatSettings.LongDayNames[6]:='Пятница';
DefaultFormatSettings.LongDayNames[7]:='Суббота';
DefaultFormatSettings.ShortDayNames[1]:='Вс';
DefaultFormatSettings.ShortDayNames[2]:='Пн';
DefaultFormatSettings.ShortDayNames[3]:='Вт';
DefaultFormatSettings.ShortDayNames[4]:='Ср';
DefaultFormatSettings.ShortDayNames[5]:='Чт';
DefaultFormatSettings.ShortDayNames[6]:='Пт';
DefaultFormatSettings.ShortDayNames[7]:='Сб';
end;
procedure InitLocale;
begin
DefaultFormatSettings.LongDateFormat:='dd.mm.yyyy';
DefaultFormatSettings.ShortDateFormat:=DefaultFormatSettings.LongDateFormat;
DefaultFormatSettings.DateSeparator:='.';
DefaultFormatSettings.TimeSeparator:=':';
DefaultFormatSettings.ThousandSeparator:=' ';
DefaultFormatSettings.CurrencyString:='р.';
ConvetToUTF8LocalConst;
end;
При запуске программы вызови функцию InitLocale;
Ещё полезно сделать вызов
Application.UpdateFormatSettings:=false;
после
Application.Initialize;
в главном файле проекта (*.lpr)
Всё вышенаписанное относится к винде. В линуксе оно не нужно. Но код будет работать везде правильно.
Добрый день!
Уже несколько дней бьюсь с непонятной проблемой. Lazarus 1.2.6 + Win32. Пытаюсь заставить LR сгенерить отчет из файла по данным из IBQuery (использую последнюю версию IBX от *Rik*). При выполнении ShowReport пробегает прогрессбар препарации, и окно превью не показывается. Сваял простейший тестовый проект на базе EMPLOYEE.FDB, идущей в комплекте с Firebird. Интересно, что когда свойства задаются в DesignTime на подцепленной БД, отчет в превью, вызываемом из дизайнера, показывается нормально. А в RunTime - хрень. Прошу помощи. Тестовый проект прилагаю (там понадобятся мелкие правки путей к БД и к клиентской либе).
Добавлено спустя 1 минуту 57 секунд:
Да, дело именно в LR, а не в IBX, так как в первой версии моего проекта я сначала копировал данные из IBSQL в MemDataset и четко видел, что заполнение датасета шло правильно.
Добавлено спустя 13 минут 28 секунд:
UPD. Нашел, что я не один такой, но вопрос до сих пор не решили.
http://lists.lazarus.freepascal.org/pip ... 58236.html
Уже несколько дней бьюсь с непонятной проблемой. Lazarus 1.2.6 + Win32. Пытаюсь заставить LR сгенерить отчет из файла по данным из IBQuery (использую последнюю версию IBX от *Rik*). При выполнении ShowReport пробегает прогрессбар препарации, и окно превью не показывается. Сваял простейший тестовый проект на базе EMPLOYEE.FDB, идущей в комплекте с Firebird. Интересно, что когда свойства задаются в DesignTime на подцепленной БД, отчет в превью, вызываемом из дизайнера, показывается нормально. А в RunTime - хрень. Прошу помощи. Тестовый проект прилагаю (там понадобятся мелкие правки путей к БД и к клиентской либе).
Добавлено спустя 1 минуту 57 секунд:
Да, дело именно в LR, а не в IBX, так как в первой версии моего проекта я сначала копировал данные из IBSQL в MemDataset и четко видел, что заполнение датасета шло правильно.
Добавлено спустя 13 минут 28 секунд:
UPD. Нашел, что я не один такой, но вопрос до сих пор не решили.
http://lists.lazarus.freepascal.org/pip ... 58236.html
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- *Rik*
- постоялец
- Сообщения: 453
- Зарегистрирован: 19.04.2011 12:18:51
- Откуда: Урал
- Контактная информация:
slyubez писал(а):Добрый день!
Уже несколько дней бьюсь с непонятной проблемой. Lazarus 1.2.6 + Win32. Пытаюсь заставить LR сгенерить отчет из файла по данным из IBQuery (использую последнюю версию IBX от *Rik*). При выполнении ShowReport пробегает прогрессбар препарации, и окно превью не показывается. Сваял простейший тестовый проект на базе EMPLOYEE.FDB, идущей в комплекте с Firebird. Интересно, что когда свойства задаются в DesignTime на подцепленной БД, отчет в превью, вызываемом из дизайнера, показывается нормально. А в RunTime - хрень. Прошу помощи. Тестовый проект прилагаю (там понадобятся мелкие правки путей к БД и к клиентской либе).
Добавлено спустя 1 минуту 57 секунд:
Да, дело именно в LR, а не в IBX, так как в первой версии моего проекта я сначала копировал данные из IBSQL в MemDataset и четко видел, что заполнение датасета шло правильно.
Добавлено спустя 13 минут 28 секунд:
UPD. Нашел, что я не один такой, но вопрос до сих пор не решили.
http://lists.lazarus.freepascal.org/pip ... 58236.html
На линуксе завелось. Только я в Вашем примере в TForm1.FormShow оставил:
Код: Выделить всё
with IBDatabase1
do begin
Connected:=True;
end;
IBTransaction1.StartTransaction;
остальное в IBDatabase прописал, и из SQL запроса убрал ';'
ps:
Вы используете FileExists а не FileExistsUTF8, у Вас случайно русских букв в путях нет?
В Линуксе я пока не проверял - после попытки установки FastReport Lazarus перестал запускаться, придется переставлять. Завтра попробую, но вполне вероятно, что глюк только в виндовой версии. По результатам отпишусь.
FileExists тут ни при чем. Эта функция взята из исходного проекта, но для этого теста переделана под EMPLOYEE.FDB и слегка подрезана, чтобы упростить поиск проблемы: в том проекте при отсутствии файла работа функции завершается, и выдается сообщение об ошибке. Да и отладчик легко проскакивал эту функцию. Русские символы в пути есть.
FileExists тут ни при чем. Эта функция взята из исходного проекта, но для этого теста переделана под EMPLOYEE.FDB и слегка подрезана, чтобы упростить поиск проблемы: в том проекте при отсутствии файла работа функции завершается, и выдается сообщение об ошибке. Да и отладчик легко проскакивал эту функцию. Русские символы в пути есть.
- *Rik*
- постоялец
- Сообщения: 453
- Зарегистрирован: 19.04.2011 12:18:51
- Откуда: Урал
- Контактная информация:
slyubez
В отладчике хорошо видно, что Application.ExeName при наличии русских букв, требует перекодировки пути в UTF8, иначе LazReport просто не может найти файл с болванкой для отчета.
Процедура запуска отчета должна в Windows выглядеть так:
В отладчике хорошо видно, что Application.ExeName при наличии русских букв, требует перекодировки пути в UTF8, иначе LazReport просто не может найти файл с болванкой для отчета.
Процедура запуска отчета должна в Windows выглядеть так:
Код: Выделить всё
function FormMaterialMovingReport: Integer;
const
SELSQL = 'SELECT COUNTRY, CURRENCY FROM COUNTRY;';
var s, EName: String;
begin
Result:=0;
EName := UTF8Encode( Application.ExeName );
s:=ExtractFilePath (EName)+'Test.lrf';
if not FileExistsUTF8 (s)
then begin
Result:=DS_EXCEPTION;
Exit;
end;
with Form1.ReportDS
do try
SQL.Text:=SELSQL;
with Form1.frReport1
do begin
LoadFromFile (s);
ShowReport;
end;
except
on E: Exception
do begin
Result:=DS_EXCEPTION;
Exit;
end;
end;
end;
*Rik*, огромное спасибо. Тестовый проект завелся, сейчас буду корректировать основной проект. Крайне странно, что LazReport при ненахождении файла не выкидывает исключение. А в Линуксе можно оставить конструкцию в таком виде (среду с FPC еще не переставлял)? И как считаете, может быть, правильнее для кроссплатформенного кода использовать функцию SysToUTF8?
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Не холивара ради - а какое исключение должен выкидывать именно LazReport? Проверять, находится ли файл по указанному пути - обязанность программиста. Я, например, всегда пишу в кодеslyubez писал(а):Крайне странно, что LazReport при ненахождении файла не выкидывает исключение.
Код: Выделить всё
if FileExists(...) then ...- *Rik*
- постоялец
- Сообщения: 453
- Зарегистрирован: 19.04.2011 12:18:51
- Откуда: Урал
- Контактная информация:
slyubez писал(а):*Rik*, огромное спасибо. Тестовый проект завелся, сейчас буду корректировать основной проект. Крайне странно, что LazReport при ненахождении файла не выкидывает исключение. А в Линуксе можно оставить конструкцию в таком виде (среду с FPC еще не переставлял)? И как считаете, может быть, правильнее для кроссплатформенного кода использовать функцию SysToUTF8?
Да, используйте SysToUTF8, она в Linux просто игнорируется (я почему-то напортачил и прописал UTF8Encode)..
