2016-11-29 22 views
1

私はTDBChartを使用しています - TeeChart STDから私が使用しているDB内の私のPRICE列の値のSUMを行い、それがソートだ円グラフを表示しますMonthsのデータ - DATE列から、データベースにはdatetime typeと設定されています。次 変更TDBChart月フォーマット表示

マイTDBChart表示さ

enter image description here

私の問題:私はそれが10月〜2016年11月 - 2016としてを表示させるにはどうすればよい

(idealyオクト16およびNov-16)。

ご覧のとおり、現在は10-16と11-16の数字が表示されています。

シリーズオプション内の任意の場所でフォーマットオプションを見つけることができないようです。

答えて

2

ポイントを追加する前にdatetimeを文字列としてフォーマットし、それをラベルとして渡します。すなわち:

uses DateUtils; 

procedure TForm1.FormCreate(Sender: TObject); 
var tmpDate: TDateTime; 
    i: Integer; 
begin 
    for i:=0 to 1 do 
    begin 
    tmpDate:=IncMonth(Today,i); 
    Series1.AddPie(random*100,FormatDateTime('mmm-yy', tmpDate)); 
    end; 
end; 

EDIT:

あなたがデータソースに接続する移入されている場合は、ラベルが自動的に追加されます。次に、ソースを変更することなく、私が見る唯一のオプションは、次のようにOnGetMarkTextイベントを使用することです:

procedure TForm1.Series1GetMarkText(Sender: TChartSeries; ValueIndex: Integer; 
    var MarkText: string); 
var i: Integer; 
    m, y: string; 
begin 
    i:=Pos('-',MarkText); 
    m:=Copy(MarkText,1,i-1); 
    y:=Copy(MarkText,i+1,Length(MarkText)-i); 
    MarkText:=ShortMonthNames[StrToInt(m)] + ' ' + y; 
end; 
+0

私が直接データソース]タブ、要約して、そこに私のTSimpleDataSetの設定を使用して情報を追加します。私があなたの提案を正しく理解していれば、このように「ポイントを追加してラベルとして渡す」ことができないのですか、あるいはあなたが提案していることを間違って理解しましたか? – Petzy

+0

こんにちは、答えに加えてくれてありがとう!問題のDBChartを選択するとき、Object Inspectorリストでそのイベントを使用することはできません。私はそれがSeriesイベントであることに気付きました。どのようにそれらのイベントにアクセスできますか?自分のDBChart内のシリーズを選択するオブジェクトインスペクタでイベントリストを生成しない – Petzy

+0

オブジェクトインスペクタでシリーズを選択できます(フォーカスを変更するフォームをクリックすると、コンボボックスにシリーズを追加するとオブジェクトインスペクタがリフレッシュされます) 。また、イベントを手動で宣言し、実行時に 'FormCreate'でイベントを割り当てることもできます:' Series1.OnGetMarkText:= Series1GetMarkText; ' – Yeray

関連する問題