2016-11-29 51 views
1

我使用的是TDBChart - 從的TeeChart標準顯示一個餅圖,確實值的SUM從我PRICE列我使用的數據庫裏面,它的排序的關於Months的數據 - 來自數據庫中設置爲datetime typeDATE列。變化TDBChart月格式顯示

TDBChart顯示以下內容:

enter image description here

我的問題:我如何讓它顯示截至10月 - 2016年十一月-2016

(idealy辛16日和11月16日)。

正如您所看到的,它目前將其顯示爲數字--10-16和11-16。

似乎無法在系列選項內的任何位置找到Format選項。

回答

2

我會在添加點之前將日期時間格式化爲字符串,我將它作爲標籤傳遞。即:

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; 

編輯:

如果您填充它連接到數據源,然後將標籤自動添加。然後,我看到不修改源唯一的選擇將是如下使用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列表中提供該事件。我注意到這是一個系列賽事,我如何訪問這些事件?在我的DBChart中選擇系列不會在對象檢查器中生成事件列表 – Petzy

+0

您可以在對象檢查器中選擇系列(單擊表單更改焦點,並且將對對象檢查器進行刷新,將系列添加到組合框中) 。或者,您可以手動聲明事件並在運行時在'FormCreate'處分配事件:'Series1.OnGetMarkText:= Series1GetMarkText;' – Yeray