tdbAdvGDPIChart crashing on form close

Hi,
I m using the following code to create and modify tdbAdvGDPIChart Series:

procedure refreshSalesAndBuysChartV2(AOwner: tComponent;
sysCon, dCon: tUniConnection; idStores: string; slUsages, slColors: tstringList; sales: Boolean; qnt: Boolean;
idParts: string; includeChildren: Boolean;
logarithmic: Boolean; var sqr: tUniQuery; var sdts : tUniDatasource; var Chart: tDBAdvGDIPChartView);
var
i, j: integer;
er : boolean;
slSums :tStringList;
usages : string;
begin
er := false;
try
slSums := tStringList.Create;
for i := 0 to slUsages.Count-1 do
usages := usages+','+slUsages[i];
usages := copy(usages,2, length(usages)-1);

sqr.Connection  := sysCon;
fetchStats(dCon.Database,includeChildren, sales, qnt, idStores, usages, idParts, sqr, slSums,  er);
sdts.DataSet  := sqr;

if not er then
  begin
      with Chart do
        begin

            panes[0].Background.Font.Charset := DEFAULT_CHARSET;
            panes[0].Background.Font.Color := clWindowText;
            panes[0].Background.Font.Height := -11 ;
            panes[0].Background.Font.Name := 'Tahoma';
            panes[0].Background.Font.Style := [];
            panes[0].CrossHair.CrossHairYValues.ShowYPosValue := True;
            panes[0].CrossHair.CrossHairYValues.Position := [chYAxis];
            panes[0].CrossHair.Distance := 0;
            panes[0].Height := 100.000000000000000000;
            panes[0].Legend.Alignment := laTopRight;
            panes[0].Legend.BorderColor := clNone;
            panes[0].Legend.BorderWidth := 0;
            panes[0].Legend.Font.Charset := DEFAULT_CHARSET;
            panes[0].Legend.Font.Color := clWindowText ;
            panes[0].Legend.Font.Height := -11;
            panes[0].Legend.Font.Name := 'Tahoma' ;
            panes[0].Name := 'ChartPane 0';
            panes[0].Options := [];
            panes[0].Range.RangeTo := 11;
            panes[0].Series.SerieValueTotals := True;

            panes[0].Title.Alignment := taCenter;
            panes[0].Title.Font.Charset := DEFAULT_CHARSET;
            panes[0].Title.Font.Color := clWindowText;
            panes[0].Title.Font.Height := -11;
            panes[0].Title.Font.Name := 'Tahoma';
            panes[0].Title.Font.Style := [] ;
            panes[0].Title.Position := tTop ;
            if sales then
              begin
                if qnt then
                  panes[0].Title.Text := 'Ποσότητα πωλήσεων ανά μήνα'
                else
                  panes[0].Title.Text := 'Αξία πωλήσεων ανά μήνα';
              end
            else
              begin
                if qnt then
                  panes[0].Title.Text := 'Ποσότητα αγορών ανά μήνα'
                else
                  panes[0].Title.Text := 'Αξία αγορών ανά μήνα';
              end;
            panes[0].XAxis.Font.Charset := DEFAULT_CHARSET;
            panes[0].XAxis.Font.Color := clWindowText;
            panes[0].XAxis.Font.Height := -11 ;
            panes[0].XAxis.Font.Name := 'Tahoma';
            panes[0].XAxis.Font.Style := [] ;
            panes[0].XAxis.Text := 'Μήνας';
            panes[0].XGrid.MajorFont.Charset := DEFAULT_CHARSET;
            panes[0].XGrid.MajorFont.Color := clWindowText;
            panes[0].XGrid.MajorFont.Height := -11;
            panes[0].XGrid.MajorFont.Name := 'Tahoma';
            panes[0].XGrid.MajorFont.Style := [];
            panes[0].XGrid.MinorFont.Charset := DEFAULT_CHARSET;
            panes[0].XGrid.MinorFont.Color := clWindowText ;
            panes[0].XGrid.MinorFont.Height := -11;
            panes[0].XGrid.MinorFont.Name := 'Tahoma' ;
            panes[0].XGrid.MinorFont.Style := [];
            panes[0].YAxis.AutoSize := True ;
            panes[0].YAxis.AutoUnits := False ;
            panes[0].YAxis.Font.Charset := DEFAULT_CHARSET ;
            panes[0].YAxis.Font.Color := clWindowText;
            panes[0].YAxis.Font.Height := -11 ;
            panes[0].YAxis.Font.Name := 'Tahoma' ;
            panes[0].YAxis.Font.Style := [] ;
            panes[0].YAxis.Line := False ;
            panes[0].YAxis.Position := yNone  ;
            panes[0].YGrid.MinorDistance := 1.000000000000000000;
            panes[0].YGrid.MajorDistance := 2.000000000000000000 ;
            panes[0].YGrid.Visible := True  ;
            panes[0].DataSource := sdts;

            for i := Chart.panes[0].Series.count-1 downto 0  do
              begin
                if assigned(Chart.panes[0].Series[i]) then
                  Chart.panes[0].Series[i].Free;
              end;


        for i:= 0 to sqr.Fields.Count-2 do
          begin
            panes[0].Series.Add;

            panes[0].series[i].Pie.ValueFont.Charset := DEFAULT_CHARSET;
            panes[0].series[i].Pie.ValueFont.Color := clWindowText ;
            panes[0].series[i].Pie.ValueFont.Height := -11 ;  ;
            panes[0].series[i].Pie.ValueFont.Name := 'Tahoma'  ;
            panes[0].series[i].Pie.ValueFont.Style := []  ;
            panes[0].series[i].Pie.LegendFont.Charset := DEFAULT_CHARSET  ;
            panes[0].series[i].Pie.LegendFont.Color := clWindowText ;
            panes[0].series[i].Pie.LegendFont.Height := -11    ;
            panes[0].series[i].Pie.LegendFont.Name := 'Tahoma' ;
            panes[0].series[i].Pie.LegendFont.Style := []   ;
            //panes[0].series[i].Annotations := <>    ;
            panes[0].series[i].ChartType := ctBar ;
            panes[0].series[i].CrossHairYValue.Font.Charset := DEFAULT_CHARSET ;
            panes[0].series[i].CrossHairYValue.Font.Color := clWindowText   ;
            panes[0].series[i].CrossHairYValue.Font.Height := -11  ;
            panes[0].series[i].CrossHairYValue.Font.Name := 'Tahoma';
            panes[0].series[i].CrossHairYValue.Font.Style := []  ;
            panes[0].series[i].CrossHairYValue.GradientSteps := 0  ;
            panes[0].series[i].LegendText := sqr.Fields[i+1].FieldName+' ('+slSums[i]+')';
            panes[0].series[i].Name := sqr.Fields[i+1].FieldName;//'Serie 0'    ;
            panes[0].series[i].ShowValue := True      ;
            panes[0].series[i].ShowAnnotationsOnTop := True   ;
            panes[0].series[i].ValueFont.Charset := DEFAULT_CHARSET ;
            panes[0].series[i].ValueFont.Color := clWindowText  ;
            panes[0].series[i].ValueFont.Height := -11    ;
            panes[0].series[i].ValueFont.Name := 'Tahoma'   ;
            panes[0].series[i].ValueFont.Style := []  ;
            panes[0].series[i].ValueAngle := 90  ;
            panes[0].series[i].ValueFormat := '%g'   ;
            panes[0].series[i].XAxis.DateTimeFont.Charset := DEFAULT_CHARSET ;
            panes[0].series[i].XAxis.DateTimeFont.Color := clWindowText ;
            panes[0].series[i].XAxis.DateTimeFont.Height := -11    ;
            panes[0].series[i].XAxis.DateTimeFont.Name := 'Tahoma'   ;
            panes[0].series[i].XAxis.DateTimeFont.Style := [];
            panes[0].series[i].XAxis.MajorFont.Charset := DEFAULT_CHARSET ;
            panes[0].series[i].XAxis.MajorFont.Color := clWindowText ;
            panes[0].series[i].XAxis.MajorFont.Height := -11   ;
            panes[0].series[i].XAxis.MajorFont.Name := 'Tahoma'   ;
            panes[0].series[i].XAxis.MajorFont.Style := [] ;
            panes[0].series[i].XAxis.MajorUnit := 1.000000000000000000 ;
            panes[0].series[i].XAxis.MajorUnitSpacing := 0 ;
            panes[0].series[i].XAxis.MinorFont.Charset := DEFAULT_CHARSET ;
            panes[0].series[i].XAxis.MinorFont.Color := clWindowText ;
            panes[0].series[i].XAxis.MinorFont.Height := -11    ;
            panes[0].series[i].XAxis.MinorFont.Name := 'Tahoma'  ;
            panes[0].series[i].XAxis.MinorFont.Style := []   ;
            panes[0].series[i].XAxis.MinorUnit := 1.000000000000000000 ;
            panes[0].series[i].XAxis.MinorUnitSpacing := 0       ;
            panes[0].series[i].XAxis.TextTop.Font.Charset := DEFAULT_CHARSET   ;
            panes[0].series[i].XAxis.TextTop.Font.Color := clWindowText ;
            panes[0].series[i].XAxis.TextTop.Font.Height := -11      ;
            panes[0].series[i].XAxis.TextTop.Font.Name := 'Tahoma'   ;
            panes[0].series[i].XAxis.TextTop.Font.Style := []      ;
            panes[0].series[i].XAxis.TextBottom.Font.Charset := DEFAULT_CHARSET   ;
            panes[0].series[i].XAxis.TextBottom.Font.Color := clWindowText ;
            panes[0].series[i].XAxis.TextBottom.Font.Height := -11  ;
            panes[0].series[i].XAxis.TextBottom.Font.Name := 'Tahoma';
            panes[0].series[i].XAxis.TextBottom.Font.Style := [] ;
            panes[0].series[i].YAxis.MajorFont.Charset := DEFAULT_CHARSET;
            panes[0].series[i].YAxis.MajorFont.Color := clWindowText ;
            panes[0].series[i].YAxis.MajorFont.Height := -11   ;
            panes[0].series[i].YAxis.MajorFont.Name := 'Tahoma';
            panes[0].series[i].YAxis.MajorFont.Style := []   ;
            panes[0].series[i].YAxis.MajorUnitSpacing := 0  ;
            panes[0].series[i].YAxis.MinorFont.Charset := DEFAULT_CHARSET ;
            panes[0].series[i].YAxis.MinorFont.Color := clWindowText ;
            panes[0].series[i].YAxis.MinorFont.Height := -11   ;
            panes[0].series[i].YAxis.MinorFont.Name := 'Tahoma'  ;
            panes[0].series[i].YAxis.MinorFont.Style := []   ;
            panes[0].series[i].YAxis.MinorUnitSpacing := 0  ;
            panes[0].series[i].YAxis.TextLeft.Font.Charset := DEFAULT_CHARSET ;
            panes[0].series[i].YAxis.TextLeft.Font.Color := clWindowText ;
            panes[0].series[i].YAxis.TextLeft.Font.Height := -11    ;
            panes[0].series[i].YAxis.TextLeft.Font.Name := 'Tahoma'  ;
            panes[0].series[i].YAxis.TextLeft.Font.Style := [] ;
            panes[0].series[i].YAxis.TextRight.Font.Charset := DEFAULT_CHARSET  ;
            panes[0].series[i].YAxis.TextRight.Font.Color := clWindowText ;
            panes[0].series[i].YAxis.TextRight.Font.Height := -11  ;
            panes[0].series[i].YAxis.TextRight.Font.Name := 'Tahoma' ;
            panes[0].series[i].yAxis.TextRight.Font.Style := []   ;
            panes[0].series[i].SelectedMark := True ;
            panes[0].series[i].Darken3D := False ;
            panes[0].series[i].BarValueTextFont.Charset := DEFAULT_CHARSET ;
            panes[0].series[i].BarValueTextFont.Color := clWindowText  ;
            panes[0].series[i].BarValueTextFont.Height := -11 ;
            panes[0].series[i].BarValueTextFont.Name := 'Tahoma' ;
            panes[0].series[i].BarValueTextFont.Style := []  ;
            panes[0].series[i].XAxisGroupsVisible := False;
            panes[0].series[i].SerieType := stNormal ;
            panes[0].series[i].FieldNameValue := sqr.Fields[i+1].FieldName;//   '2022' ;
            panes[0].series[i].FieldNameXAxis := sqr.Fields[0].FieldName;//'mo';
            panes[0].Series[i].Color  := stringToColor(slColors[i]);
          end
        end;
  end;

finally
chart.LoadData;
chart.Refresh;
slSums.Free;
end;
end;

AdvChart, sqr and sdts are located and created on parent form.

When I close the form which onClose event runs "Action = caFree" I have an access violation error. Read of addres 00000000......

Can you help me?

Did you try to debug the access violation and if so, at which line does it occur?

Exception occures in form.close event.
Form Close event is:

procedure TformPartOrders.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Action := caFree;
end;

It seems that exception occurs in AdvChartView destructor in FChart.Free line

destructor TChartPane.Destroy;
begin
  FChart.Free;
  FSplitter.Free;
  FTimerScroll.Free;
  FTimerZoomOut.Free;
  inherited;
end;

I noticed that exception occurs only if i add series on runtime using the code above (refer to my first post).

Thank you!

Please send a small sample so we can investigate what is going wrong here.

Can you please send me a sample on how to create the chart on runtime using Bar series?
I changed to DBadvChartView.
I m trying to load monthly sales for years 2022 to 2024. I use a virtual table with following columns: month, [2022],[2023],[2024]
I m creating 3 bar series, one for each year. All series have the same XAxis: column month.

I m afraid that the error is in the code I use to create and modify the chart....

Thank you

I finally found the true reason of the exception. It was not tbadvChart fault.
Thank you

Thanks for the feedback.

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.