TChart и LazReport: вставка круговой диаграммы в отчёт

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

TChart и LazReport: вставка круговой диаграммы в отчёт

Сообщение artem78 » 28.10.2024 22:58:06

Здравствуйте, уважаемые специалисты. Помогите чайнику с вставкой графика в LazReport. В шаблоне отчёта специально под это дело добавлен компонент типа Picture. Вот код, который формирует график и вставляет его в отчёт:

Код: Выделить всё
procedure TForm1.frReport1EnterRect(Memo: TStringList; View: TfrView);
var
  bmp : TBitmap;
  Ser: TPieSeries;
  Chart: TChart;
begin
  if View.Name='Chart' then
  begin
    { создание объектов }
    bmp := TBitmap.Create;
    Chart := TChart.Create(Nil {self});
    Chart.Width:=Round(View.Width);
    Chart.Height:=Round(View.Height);
    Ser := TPieSeries.Create({Chart} nil);
    Chart.AddSeries(Ser);

    try
      { наполнение данными }
      Ser.AddY(22, 'Avito'{, clGreen});
      Ser.AddY(5, 'Tvil'{, clRed});
      Ser.AddY(8, 'Sutochno'{, clBlue});
      Ser.Active:=True;

      Chart.Visible:=True;


      { вывод через bitmap в документ отчёта }
      bmp.SetSize(Round(View.Width), Round(View.Height));
      bmp.Canvas.Brush.Color := {clWhite} clSkyBlue;
      bmp.Canvas.FillRect(0, 0, bmp.Width, bmp.Height);
      Chart.PaintTo(bmp.Canvas, 0, 0);
      TFrPictureView(View).Picture.Bitmap := bmp;
    finally
      Chart.Free;
      //Ser.Free;
      bmp.Free;
    end;
  end;
end; 


Результат: область изображения закрашивается в цвет фона, но сам график не рисуется. Полдня мучаюсь, не пойму в чём проблема.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
artem78
новенький
 
Сообщения: 48
Зарегистрирован: 09.08.2015 18:52:24

Re: TChart и LazReport: вставка круговой диаграммы в отчёт

Сообщение Alex2013 » 29.10.2024 05:43:05

Первое что пришло в голову (не вникая в код) Chart.Free; и bmp.Free; точно там где нужно ? ( только упели нарисовать и тут же освободили память )
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

Re: TChart и LazReport: вставка круговой диаграммы в отчёт

Сообщение artem78 » 29.10.2024 12:48:09

Chart.Free; и bmp.Free


Попробывал заккоментировать эти две строчки, ничего не изменилось.

Добавлено спустя 21 минуту 36 секунд:
Эврика! Заменил
Код: Выделить всё
Chart.PaintTo(bmp.Canvas, 0, 0);

на
Код: Выделить всё
Chart.PaintOnCanvas(bmp.Canvas, Rect(0, 0, chart.Width, chart.Height));

и попёрло.
artem78
новенький
 
Сообщения: 48
Зарегистрирован: 09.08.2015 18:52:24

Re: TChart и LazReport: вставка круговой диаграммы в отчёт

Сообщение Alex2013 » 29.10.2024 16:52:41

Извини что мой совет был левым (ночью зачитался, а в 4-том часу голова варит с трудом :roll: )
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23

Рейтинг@Mail.ru