使用Delphi Steema TeeChart组件,如果我使用用户界面将BarSeries链接到数据集,它显示正常,但如果我使用代码(我需要),它只显示一个条,即使我在数据库中有几条记录。我做错了什么?
代码:
var
i:Integer;
Bar:TBarSeries;
begin
ADataSet.Close;
ADataSet.LoadFromDataSet(mtbl);
ADataSet.Active := true;
ADataSet.First;
ASource.DataSet := ADataSet;
Bar := TBarSeries.Create(AChart);
Bar.Assign(Series2);
Bar.ParentChart := AChart;
Bar.DataSource := ASource;
Bar.XLabelsSource := 'Date';
Bar.YValues.ValueSource := 'Load';
for i := 0 to AChart.SeriesCount - 1 do
begin
AChart.Series[i].CheckDataSource;
end;
ADataSet是一个DevExpress MemData(TdxMemData)。当我运行程序时,X轴只显示一个条形,即数据集中的第一条记录,即使我在数据集中有4条记录。
答案 0 :(得分:3)
此代码适用于我(使用具有字段ID和高度的Access数据库,我在表单上删除了TDBChart,TADODataSet和TButton):
procedure TForm1.Button1Click(Sender: TObject);
var
Bar : TBarSeries;
begin
ADODataSet1.Close;
ADODataSet1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;...';
Bar := TBarSeries.Create(DBChart1);
DBChart1.AddSeries(Bar);
Bar.ParentChart := DBChart1;
Bar.DataSource := ADODataSet1;
Bar.XLabelsSource := 'ID';
Bar.YValues.ValueSource := 'Height';
ADODataSet1.Active := true;
end;
请注意,数据源应该是TTable,TQuery或TDataSet(不是TDataSource - 去图!)。
希望这有帮助。
答案 1 :(得分:0)
每次设置
时,TChart都会刷新查询ADataSet.Active:= true;
所以,将此命令移动到块的末尾(例如,在设置系列属性之后)。