2009-02-10 47 views
1

使用Delphi Steema TeeChart組件,如果我使用用戶界面將BarSeries鏈接到數據集,它顯示的很好,但如果我使用代碼(我需要)執行它,它只顯示一個條,即使我在數據庫中有多條記錄。我究竟做錯了什麼?Delphi TeeChart只顯示數據集中的一條記錄

代碼:

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

組件的名稱是「tchart」,因此您可能需要編輯標題和文本。有幾個其他StackOverflow問題標記爲「tchart」,所以這將有助於尋找類似的。 – Argalatyr 2009-02-10 03:53:47

+0

我明白,我用TeeChart強調這是Steema的組件,而不是Delphi的默認組件。 – Robo 2009-02-10 04:40:28

回答

3

此代碼對我的作品(使用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 - 請看圖!)。

希望這會有所幫助。

0

TChart刷新查詢每次設置

ADataSet.Active:= TRUE;

因此,將此命令移動到塊的末尾(例如,在設置了系列屬性後)。

+0

謝謝,但這沒有幫助。我將LoadFromDataSet和Active:= true移動到TBarSeries設置部分的下方,並且它仍然只顯示一條記錄。由於它顯示了一條記錄,因此它必須知道該數據集處於活動狀態並且有記錄,不知道爲什麼它沒有顯示所有記錄。 – Robo 2009-02-10 04:44:37