我这是一个动态添加Series的过程,先判断CheckListBox1哪个被选中,然后执行查询,将第一次查询结果做成SeriesList[0],第二次查询结果做成SeriesList[1],代码如下:
begin
DBChart1.SeriesList.clear;
j:=0;
for i:=0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.Checked[i]=true then
begin
s1:=trim(checklistbox1.items[i]);
QueryData.Close;
QueryData.parameters.ParamByName('p1')}.Value:=s1;
QueryData.Open;
DBChart1.SeriesList[j]:=TLineSeries.Create(nil);
DBChart1.AddSeries(DBChart1.SeriesList[j]);
DBChart1.SeriesList[j].DataSource:=QueryData;
DBChart1.SeriesList[j].XLabelsSource:='CreateTime';
DBChart1.SeriesList[j].YValues.ValueSource:='Data';
DBChart1.SeriesList[j].Active:=True;
Inc(j);
end;
end;为什么执行到DBChart1.AddSeries(DBChart1.SeriesList[j]);就报个“List index out of bounds(0)”的错?
望大侠们指教
begin
DBChart1.SeriesList.clear;
j:=0;
for i:=0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.Checked[i]=true then
begin
s1:=trim(checklistbox1.items[i]);
QueryData.Close;
QueryData.parameters.ParamByName('p1')}.Value:=s1;
QueryData.Open;
DBChart1.SeriesList[j]:=TLineSeries.Create(nil);
DBChart1.AddSeries(DBChart1.SeriesList[j]);
DBChart1.SeriesList[j].DataSource:=QueryData;
DBChart1.SeriesList[j].XLabelsSource:='CreateTime';
DBChart1.SeriesList[j].YValues.ValueSource:='Data';
DBChart1.SeriesList[j].Active:=True;
Inc(j);
end;
end;为什么执行到DBChart1.AddSeries(DBChart1.SeriesList[j]);就报个“List index out of bounds(0)”的错?
望大侠们指教
NewPie : TPieSeries;
begin
NewPie := TPieSeries.Create(Self);
NewPie.ParentChart := DBChart1;
DBChart1.AddSeries(NewPie);
end;
var i:integer; s:string;
ado_Array: array of tadoquery;
series: array of TLineSeries ;
begin
with ADO_distinct_buyer do
begin
close;
parameters.ParamByName('d1').value := strtodate(datetostr((dp5.DateTime)));
parameters.ParamByName('d2').value := strtodate(datetostr((dp6.DateTime)));
open;
end;
ClientDataSet1.close;
ClientDataSet1.open;
if ClientDataSet1.isempty then exit;
SetLength(ado_Array,ClientDataSet1.RecordCount);
SetLength(series,ClientDataSet1.RecordCount);
ClientDataSet1.First;
dbChart1.Legend.Visible:=true;
dbChart1.SeriesList.Clear;
for i:=1 to ClientDataSet1.RecordCount do
begin
s:='select 日期=date1,结算数量=sum(js_shl),均价=avg(price),金额=sum(jin/10000) from dr_tong_ht'
+' where date1>='+#39+datetostr(dp5.DateTime)+#39+' and date1<='+#39+datetostr(dp6.DateTime)+#39
+' and buyer='+#39+ClientDataSet1.fieldByName('购方').value+#39
+' group by date1';
ado_Array[i-1]:=tadoquery.Create(self);
ado_Array[i-1].Connection:=f_log.c;
f_public.opensql(s,ado_Array[i-1]); series[i-1]:=TLineSeries.Create(self);
series[i-1].ParentChart:=dbChart1;
series[i-1].LinePen.Width:=2;
series[i-1].Active:=false;
series[i-1].Title:=ClientDataSet1.fieldByName('购方').value;
series[i-1].DataSource:=ado_Array[i-1];
series[i-1].XLabelsSource:='日期';
series[i-1].XValues.ValueSource:='日期';
series[i-1].YValues.ValueSource:='金额';
series[i-1].Active:=true; ClientDataSet1.next;
end;
end;
qTemp.Close;
qTemp.SQL.Clear;
qTemp.SQL.Add('select * from tCard where fFileName=:fFileName Order by fDate');
qTemp.Parameters.ParamByName('fFileName').Value := vFileName;
qTemp.Open;
MySeries := TFastLineSeries.Create(nil);
MySeries.ParentChart := chart1;
MySeries.Title := '温度1';
qTemp.First;
while not qTemp.Eof do
begin
MySeries.AddY(qTemp.FieldByName('fQty').AsCurrency, qTemp.FieldByName('fDate').AsString);
qTemp.Next;
end;
//
MySeries := TFastLineSeries.Create(nil);
MySeries.ParentChart := chart1;
MySeries.Title := '温度2';
qTemp.First;
while not qTemp.Eof do
begin
MySeries.AddY(qTemp.FieldByName('fQty2').AsCurrency, qTemp.FieldByName('fDate').AsString);
qTemp.Next;
end;
////////////////////删除曲线////////////////////
while Chart1.SeriesCount > 0 do
begin
Chart1.Series[0].Free;
end;