Статьи и заметкиLazarus, LazReport и вычисляемые поляВот и настал тот день, когда мне пришлось столкнуться с подготовкой отчётов. При разработке программ в Delphi я использовал в разное время QuickReport, FreeReport и FastReport. Для Lazarus особого выбора не было - либо рисовать отчеты вручную на канве принтера, либо использовать LazReport. Времени для подготовки было в обрез, поэтому я выбрал LazReport.
Сформировать отчёт получилось без особых проблем, так как LazReport сделан на основе FastReport и имеет аналогичный дизайнерский интерфейс. Но вот при заполнении отчёта данными возникла проблема, так как компонент, предоставлявший данные (TSQLQuery), похоже не знал о таком понятии, как вычисляемые поля. Поиск в интернете и эксперименты результатов не дали, хранить в БД данные, которые можно получить вычислением, мне показалось неправильным. Поэтому я решил воспользоваться средствами, предоставляемыми LazReport. Способов как минимум два:
Для заполнения своих переменных пишем обработчик события GetValue: procedure TFormReports.frReportProtocolGetValue(const ParName: String; var ParValue: Variant); begin if ParName <> 'Res' then Exit; if SQLQuery.FieldByName('result').AsInteger > 0 then ParValue:= 'Годен' else ParValue:= 'Не годен'; end; После этого всё работает так, как нам надо. Суворков Василий 28.06.2007 г. © 2007-2019 ООО "Волна-софт". |
||