2017-02-07 28 views
-1

В настоящее время я получил DBChart с несколькими линейными рядами. Я поставил дату-время каждой записи на оси x.Delphi и Teechart - изменить дату-время для времени выполнения по осям X

Теперь мне нужно изменить дату и время выполнения. Таким образом, первое записанное время-дата будет представлять 0.0hrs.

Вот несколько примеров того, что я имею в виду:

  1. 2017-01-05 08:00:00 = точка должна показать 0.0hrs по осям X
  2. 2017-01-05 08:30:00 = Точка должна показывать 0,5 часа по осям X
  3. 2017-01-05 09:00:00 = Точка должна показывать 1,0 часа по осям X
  4. 2017-01-05 09:30:00 = Точка должна показывать 1,5 часа по осям X
  5. 2017-01-05 10:00:00 = Точка должна показывать 2,0 часа по осям X
  6. 2017-01-05 10:30:00 = точка должна показать 2.5hrs по осям X
  7. ETC ............

В принципе, диаграмма показать, что произойдет между временем начала и прекращением записи моего значения в базе данных. Его более важно знать, как должно пройти время с начала записи.

Итак, есть функция или какой-либо другой способ в DBChart, который может мне помочь?

Спасибо за вашу помощь

ответ

0

Вы можете использовать OnGetAxisLabel событие, чтобы вычислить разницу и показать его. Т.е.:

var startDate: TDateTime; 

procedure TForm1.FormCreate(Sender: TObject); 
var i: Integer; 
begin 
    Series1.FillSampleValues(10); 

    startDate:=StrToDateTime('08/02/2017 10:00:00'); 

    Series1.XValue[0]:=startDate; 
    for i:=1 to Series1.Count-1 do 
    Series1.XValue[i]:=Series1.XValue[i-1]+Round(random*10)*DateTimeStep[dtTenMinutes]; 
end; 

procedure TForm1.Chart1GetAxisLabel(Sender: TChartAxis; Series: TChartSeries; 
    ValueIndex: Integer; var LabelText: string); 
var tmpDate: TDateTime; 
begin 
    if (Sender = Chart1.Axes.Bottom) then 
    begin 
    tmpDate:=StrToDateTime(LabelText); 
    tmpDate:=tmpDate-startDate; 
    LabelText:=FormatDateTime('hh:mm:ss', tmpDate); 
    end; 
end; 
+0

Спасибо за ответы, это было то, что я искал. Мне просто пришлось немного изменить его, так как диаграмма может записываться в течение нескольких дней, поэтому formatdatetime не будет работать для меня. Теперь, можно ли показать первую запись в 0.0hrs, потому что сейчас, внизу диаграмма покажет мне -0.5, 0.5, 1.5, 2.5 и т. Д. Я бы предпочел, чтобы он показывал 0 часов, 1 час, 2 часа и т. Д. в принципе, можно рассказать диаграмму, которую я должен использовать для маркировки нижних осей. Прямо сейчас, это делается автоматически. – Carl

 Смежные вопросы

  • Нет связанных вопросов^_^