Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Использование выражений в отчетах FastReport 4.15 в Delphi XE2

Delphi , Базы данных , Отчеты

При работе с отчетами в Delphi XE2 с помощью FastReport 4.15 может возникнуть потребность в использовании выражений для динамического формирования данных в отчете. В этом материале мы рассмотрим, как использовать выражения в значениях при получении значений в отчете.

Проблема

Допустим, у вас есть отчет, в котором есть поле MemoView с текстом "[a]". При получении значения для этого поля в событии GetValue отчета вы хотите, чтобы FastReport заменил "[a]" на "первое со [b] элементом", а затем заменил "[b]" на "второй". Как этого добиться?

Решение

Для достижения этой цели можно использовать рекурсивный вызов функции GetValue. Вот пример кода на Object Pascal (Delphi), решающий эту задачу:

procedure TForm1.rep1GetValue(const VarName: string; var Value: Variant);
var
  Temp: Variant;
begin
  if VarName = 'a' then
  begin
    // Рекурсивный вызов функции с 'b' и получение значения в Temp
    rep1GetValue('b', Temp);

    // Формирование итогового значения
    Value := 'первое со ' + Temp + ' элементом';
  end
  else if VarName = 'b' then
    Value := 'второй';
end;

В данном примере, если VarName равен 'a', то происходит рекурсивный вызов функции rep1GetValue с параметром 'b'. Значение, полученное в результате этого вызова, сохраняется в Temp. Затем формируется итоговое значение, которое состоит из строки "первое со " и значения, полученного в Temp.

Пример 2

Теперь рассмотрим другой пример. У вас есть отчет с полем TfrxMemoView, в котором текст "[MyExp]". На форме есть поле EditBox с именем "edt1", в которое пользователь может вводить текст. При получении значения для поля в отчете вы хотите, чтобы FastReport заменил "[MyExp]" на содержимое поля edt1, а также выполнил замену выражений в самом тексте из edt1.

Для этого можно использовать следующий код:

procedure TForm1.rep1GetValue(const VarName: string; var Value: Variant);
begin
  if VarName = 'a1' then
    Value:= 'элемент 1'
  else if VarName = 'a2' then
    Value:= 'элемент 2'
  else if VarName = 'a3' then
    Value:= 'элемент 3'
  else if VarName = 'a4' then
    Value:= 'элемент 4'
  else if VarName = 'a5' then
    Value:= 'элемент 5'
  else if VarName = 'a6' then
    Value:= 'элемент 6'
  else if VarName = 'MyExp' then
  begin
    // Замена выражений в тексте из edt1
    Value:= Format(edt1.Text, [Value]);
  end;
end;

В этом примере, если VarName равен 'MyExp', то происходит замена выражений в тексте из поля edt1 с помощью функции Format. Результат замены сохраняется в Value.

Вывод

может потребовать рекурсивных вызовов функции GetValue или замены выражений в тексте. В данной статье мы рассмотрели два примера, демонстрирующие, как это можно сделать. Применяя подобные подходы, вы сможете создавать более гибкие и динамические отчеты в FastReport.

Создано по материалам из источника по ссылке.

Материал описывает использование выражений в отчетах FastReport 4.15 в Delphi XE2, а именно: как динамически формировать данные в отчете при помощи выражений в значениях, используя рекурсивные вызовы функции GetValue или замену выражений в тексте.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Отчеты ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 22:18:24/0.0034298896789551/0