2017-07-28 55 views
3

私は 実行時に作成されたTeeChartでシリーズが表示されない?

以下の日付、エリアなどのデータを返すデータセットを持って、販売

2017年1月1日、食堂、1000年
2017年1月1日、ジム、3000
01/01/2017、サロン、2000
2017年2月1日、食堂、5000
2017年2月1日、ジム、6000
2017年2月1日、サロン、7000

I mは

は、一連の数が異なることになる。このデータ

を使用して積み上げ棒グラフを作成しようとして

私はシリーズを作成するには、以下のロジックを持っているが、私は、例えば、それぞれの値を追加する方法がわかりません私はX軸が日付であり、2つのバーが必要です。上記のデータのように、各バーは3つのシリーズで積み重ねられます。

while not tblSalesBreakdownByDate.Eof do 
begin 
    nIndex := objList.IndexOf(tblSalesBreakdownByDateCategory.AsString); 
    if nIndex = -1 then 
    begin 
    objSeries := TBarSeries.Create(Self); 
    objSeries.MultiBar := TMultiBar.mbStacked; 
    objSeries.Title := tblSalesBreakdownByDateCategory.AsString; 

    chrtBreakdownByDate.SeriesList.Add(objSeries); 
    objList.AddObject(objSeries.Title, objSeries) 
    end 
    else 
    objSeries := objList.Objects[nIndex]; 

    objSeries.Add(tblSalesBreakdownByDateTotalSales.AsFloat, tblSalesBreakdownByDateTransactionDate.AsString); 

    tblSalesBreakdownByDate.Next; 
end; 

これを実行すると、クラッシュしませんが、追加したシリーズは表示されません。

誰かが間違っていると見ることができますか?

これを行う簡単な方法はありますか?

理想的には、私はDBチャートを使用した方がいいでしょうが、データが静的ではないとすれば、それをどうやって行うのか分かりません。

乾杯

ポール

答えて

3

の代わりに:

chrtBreakdownByDate.SeriesList.Add(objSeries); 

コールAddSeries方法:

chrtBreakdownByDate.AddSeries(objSeries); 

または任意のほかのメソッド呼び出しのないシリーズにParentChartを設定します。

objSeries.ParentChart := chrtBreakdownByDate; 

SeriesListコレクションはコレクションの変更を監視しないため、シリーズはグラフに追加されませんでした。実行時にシリーズを追加する方法の例は、TChartリファレンスページにあります。

+0

DBChartの場合は、各シリーズごとに個別のデータセットを用意する必要があります。これは、ケースごとのデータセットです。 – Victoria

+0

これは実行時に厄介な音です! – Paul

+0

DBChartのデータバインディングは、シリーズ(DataSourceクラスのデータセットに、データセットとそのYValues.ValueSourceに割り当てられます)は、値を表示したいプロパティフィールド)。たぶんあなたはあなたが持っていると思うグループを得るために日付と地域別にあなたのデータセットを注文することができます。 – Victoria

関連する問題