2016-11-29 11 views
1

내가 사용 해요 TDBChart - 의 TeeChart 표준 내가 사용하고 DB를 내부에 내 PRICE 열에서 값의 SUM을하는 파이 차트를 표시하고 그것의에서 정렬 Months에있는 데이터 - 데이터베이스에 datetime type으로 설정된 DATE 열에서. 다음 변경 TDBChart이 달 포맷 디스플레이

TDBChart 표시

:

enter image description here

내 문제 : 나는 10 월 - 2016 년 11 월 - 2016로 을 표시 어떻게해야합니까

(idealy 옥트 16, 11 월 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; 

편집 :

당신이 데이터 소스에 연결 채우는 경우, 다음 레이블이 자동으로 추가됩니다. 내가 직접이 내 TSimpleDataSet을 설정 한 후 데이터 소스 탭, 요약을 사용하여 정보를 추가

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

: 그럼, 소스를 수정하지 않고 볼 수있는 유일한 옵션은 다음과 같이 OnGetMarkText 이벤트를 사용하는 것입니다. 내가 당신의 제안을 올바르게 이해한다면, 나는 "포인트를 더해서 레이블로 전달"할 수 없으며, 당신이 제안한 것을 잘못 이해 했는가? – Petzy

+0

안녕하세요, 답변에 추가해 주셔서 감사합니다! 문제의 DBChart를 선택할 때 Object Inspector 목록에서 해당 이벤트를 사용할 수 없습니다. 시리즈 이벤트라는 것을 알았습니다. 어떻게 액세스합니까? 내 DBChart 내부의 시리즈를 선택하십시오 Object Inspector에서 이벤트 목록을 생성하지 않습니다 – Petzy

+0

Object Inspector에서 시리즈를 선택할 수 있습니다 (포커스를 변경하려면 폼을 클릭하면 오브젝트 검사기가 시리즈를 콤보 상자에 추가하여 새로 고침) . 또는, 이벤트를 수동으로 선언하고 런타임에 이벤트를 'FormCreate'에서 할당 할 수 있습니다 :'Series1.OnGetMarkText : = Series1GetMarkText;' – Yeray