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?