2016-11-29 15 views
1

Я использую TDBChart - от TeeChart Std, чтобы отобразить круговую диаграмму, которая выполняет SUM значений из моего PRICE колонки внутри БД я использую, и это сортировка в данные по Months - из DATE столба, который установлен как datetime type в базе данных.Изменить TDBChart месяц Формат отображения

My TDBChart отображает следующее:

enter image description here

Моя проблема: Как мне сделать это отобразить месяц в октябре-2016 и ноябре-2016

(Idealy Oct- 16 и 16 ноября соответственно).

Как вы можете видеть, в настоящее время он отображается как цифры - 10-16 и 11-16.

Невозможно найти параметр формата для этого в любом месте внутри параметров серии.

ответ

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; 

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

добавить информацию непосредственно с помощью вкладки DataSource, Резюме и затем установить мой TSimpleDataSet там. Если я правильно понимаю ваше предложение, я не могу «добавить точки и передать его как ярлык» таким образом, или я понял, что вы предлагаете, неправильно? – Petzy

+0

Привет, спасибо за дополнение к ответу! У меня нет этого события в списке Object Inspector при выборе соответствующего DBChart. Я заметил, что это событие серии, как мне получить доступ к ним? Выберите серию внутри моего DBChart не создает список событий в Object Inspector – Petzy

+0

Вы можете выбрать серию в Инспекторе объектов (щелкните по форме, чтобы изменить фокус, и инспектор объекта будет обновлен, добавив серию в выпадающий список) , В качестве альтернативы вы можете объявить событие вручную и назначить событие во время выполнения, выполняя это в 'FormCreate':' Series1.OnGetMarkText: = Series1GetMarkText; ' – Yeray