

一直以为是没有释放查询或没有释放图标控件,搞了一两天找了释放相关的方法,最终发现只要把图表控件DBChart2.Visible := False;就可以了释放了
解决方法1:
把控制图表生成代码不要放在窗体的显示事件中,而应该放到Button按钮的点击事件,窗体显示事件中设置点击这个按钮的代码就可以了,如果不想显示该按钮直接把其显示事件设为False即可
解决方法2:有效:
终极解决方法:DBChart2.Visible := False;
procedure TChatFr.FormShow(Sender: TObject);
var
S: TChartSeries;
begin
DBChart2.Visible := False; //主要语句1,必须要有这两句
DbChart2.Title.Text.Text := 'test';
DBChart2.SeriesList.Clear;
S := TBarSeries.Create(DbChart2);
DbChart2.AddSeries(S);
ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sortsql);
ADOQuery1.Open;
S.DataSource := ADOQuery1;
if Pos('salesdata', sortsql) <> 0 then
begin
S.XLabelsSource := 'shopname';
S.YValues.ValueSource := 'salesmoney';
end
else
begin
S.XLabelsSource := 'cjsname';
S.YValues.ValueSource := 'cjsmoney';
end;
S.ShowInLegend:=False;
DBChart2.Gradient.StartColor:=clBlue;
DBChart2.Gradient.EndColor:=clWhite;
DBChart2.Gradient.Visible:=True;
DBChart2.AllowPanning := pmNone;
DBChart2.Align := alClient;
DBChart2.Refresh;
DBChart2.Visible := True; //主要语句2,必须要有这两句
end;