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

«Работа с объектами в FastReport 4: правильное создание и удаление»

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

Работа с объектами в FastReport 4: правильное создание и удаление

FastReport — это популярный отчетный инструмент для Delphi, который позволяет создавать сложные отчеты с минимальными усилиями. Однако при работе с динамически созданными объектами в отчете могут возникнуть некоторые сложности. В этой статье мы рассмотрим, как правильно создавать и удалять объекты в FastReport 4, а также разберемся с одним из распространенных вопросов, связанных с потерей объектов после их удаления.

Создание объекта в отчете

Для создания объекта в отчете FastReport можно использовать компонент TfrxMemoView. Вот пример кода на Object Pascal, который создает memo-компонент на основе существующего объекта в отчете:

procedure TForm1.btn1Click(Sender: TObject);
var
  modelObj: TfrxComponent;
  newObj: TfrxMemoView;
begin
  modelObj := frxReport1.FindObject('modelObj');
  newObj := TfrxMemoView.Create(modelObj.Parent);
  newObj.CreateUniqueName;
  newObj.Text := 'Whee';
  newObj.SetBounds(modelObj.Left, modelObj.Top + modelObj.Height,
    modelObj.Width, modelObj.Height);
  frxReport1.PrepareReport;
  frxReport1.ShowPreparedReport;
  newObj.Free;
end;

В этом примере мы находим существующий объект modelObj в отчете frxReport1, создаем новый memo-компонент newObj и устанавливаем его свойства на основе свойств modelObj. После этого мы готовим и отображаем отчет, а затем удаляем созданный объект с помощью метода Free.

Удаление объекта из отчета

При удалении динамически созданного объекта из отчета могут возникнуть проблемы. Например, после удаления объекта другие объекты в отчете могут исчезнуть или стать недоступными. Это происходит из-за внутренней ошибки в методе PrepareReport.

Для решения этой проблемы можно использовать workaround, который заключается в сохранении имени созданного объекта перед его удалением и поиске объекта по этому имени после подготовки отчета. Вот пример кода, который демонстрирует этот workaround:

var
  modelObj: TfrxComponent;
  newObj: TfrxMemoView;
  cn: string;
begin
  modelObj := frxReport1.FindObject('modelObj');
  newObj := TfrxMemoView.Create(modelObj.Parent);
  newObj.CreateUniqueName;
  cn := newObj.Name; // сохраняем имя для workaround
  newObj.Text := 'Whee';
  newObj.SetBounds(modelObj.Left, modelObj.Top + modelObj.Height,
    modelObj.Width, modelObj.Height);

  ShowMessage('New: ' + newObj.Name + '  modelObj: ' + modelObj.Name);
  frxReport1.PrepareReport;
  ShowMessage('New: ' + newObj.Name + '  modelObj: ' + modelObj.Name);

  frxReport1.ShowPreparedReport;
  newObj := TfrxMemoView(frxReport1.FindObject(cn)); // поиск объекта по имени
  newObj.Free;
end;

В этом примере мы сохраняем имя созданного объекта в переменную cn перед его удалением. После подготовки отчета мы ищем объект по имени cn и удаляем его. Таким образом, мы обходим проблему с потерей объектов после их удаления.

Вывод

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

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

Эта статья объясняет, как правильно создавать и удалять объекты в FastReport 4, а также предлагает решение распространенной проблемы с потерей объектов после их удаления.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:54:41/0.0055179595947266/1