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

Улучшение отображения данных в динамически созданных диаграммах Fast Reports 4.13.1

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

В процессе работы с отчетами в Fast Reports 4.13.1 нередко возникает потребность в динамическом создании диаграмм на основе данных из различных наборов данных (data sets). Однако, пользователи могут столкнуться с проблемой, когда созданные диаграммы не отображают данные, которые были добавлены в них. В этой статье мы рассмотрим, как решить эту проблему и улучшить отображение данных в динамически созданных диаграммах.

Предположим, что у вас есть отчет, в котором необходимо отобразить несколько диаграмм на ленте сводки (summary band). Для этого вы пытаетесь динамически создавать диаграммы в обработчике события OnBeforePrint ленты сводки. Однако, несмотря на то, что диаграммы создаются корректно, серии не отображают данные, которые вы добавляете в них.

В коде, приведенном ниже, создаются диаграммы на основе данных из трех наборов данных: dsSections, dsTests и dsHistory. Диаграммы создаются в цикле, и для каждой диаграммы добавляется серия типа csLine. Внутри цикла данные из набора данных dsHistory добавляются в серию с помощью метода Add().

var
  dsSections,
  dsTests,
  dsHistory: TfrxDataSet;

  Chart: TfrxChartView;
  ChartCount: Integer;
begin
  dsSections := Report.GetDataSet('frdTestSections');
  dsTests := Report.GetDataSet('frdResults');
  dsHistory := Report.GetDataSet('frdTestHistory');

  ChartCount := 0;
  dsSections.First;
  while not dsSections.Eof do
  begin
    dsTests.First;
    while not dsTests.Eof do
    begin
      if dsHistory.RecordCount > 0 then
      begin
        Chart := TfrxChartView.Create(rsHistory);
        Chart.Left := (ChartCount mod 2) * 8 + 1;
        Chart.Top := (ChartCount div 2) * 5 + 0.5;

        Chart.Width := 8;
        Chart.Height := 5;
        Chart.Chart.Title.Text.Text := dsTests.Value('Name');
        Chart.Chart.View3D := False;

        Chart.AddSeries(csLine);
        dsHistory.First;
        while not dsHistory.Eof do
        begin
          Chart.Series[0].Add(dsHistory.Value('Result'), IntToStr(dsHistory.RecNo + 1), clBlue);
          dsHistory.Next;
        end;

        Inc(ChartCount);
      end;
      dsTests.Next;
    end;
    dsSections.Next;
  end;
end;

Однако, несмотря на правильное создание диаграмм и добавление данных в серии, серии не отображают данные. Чтобы решить эту проблему, необходимо правильно настроить серии после их создания.

После создания серии необходимо установить ее свойства Datatype, XSource и YSource. Свойство Datatype устанавливает, откуда берутся данные для серии: из набора данных (dtDBData), из ленты данных (dtBandData) или из фиксированных данных (dtFixedData). В зависимости от выбранного datatype, необходимо установить соответствующие свойства DataSet или DataBand. Кроме того, необходимо установить свойство Active в True, чтобы серия стала активной.

В альтернативном ответе предложено использовать свойства XValues и YValues объекта SeriesData вместо метода Add() для добавления данных в серию. Это позволяет более гибко управлять данными, отображаемыми в серии.

//.....
while not dsHistory.Eof do
begin
  Chart.SeriesData[0].XValues := Chart.SeriesData[0].XValues + IntToStr(dsHistory.RecNo + 1) + ';';
  Chart.SeriesData[0].YValues := Chart.SeriesData[0].YValues + FloatToStr(dsHistory.Value('Result')) + ';';
  dsHistory.Next;
end;
//.....

В заключение, для правильного отображения данных в динамически созданных диаграммах Fast Reports 4.13.1 необходимо правильно настроить серии после их создания, установив соответствующие свойства Datatype, XSource, YSource и Active. Также можно использовать свойства XValues и YValues объекта SeriesData для добавления данных в серию. Соблюдение этих рекомендаций поможет вам добиться правильного отображения данных в динамически созданных диаграммах.

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

Динамически созданные диаграммы в Fast Reports 4.13.1 не отображают данные, которые были добавлены в них, если серии не настроены правильно после создания.


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

Получайте свежие новости и обновления по 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:16:40/0.0035147666931152/0