1

使用 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 条记录。

4

2 回答 2

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 - 看图!)。

希望这可以帮助。

于 2009-02-10T07:03:30.233 回答
0

TChart 每次设置都会刷新查询

ADataSet.Active := true;

因此,将此命令移到块的末尾(例如,在您设置系列属性之后)。

于 2009-02-10T03:48:12.733 回答