Delphi和Teechart - 在X轴上更改运行时的日期时间

时间:2017-02-07 16:13:20

标签: delphi teechart delphi-10-seattle

目前,我有一个包含多个系列的DBChart。我把每个记录的日期时间放在x轴上。

现在,我需要的是更改运行时的日期时间。所以基本上,第一个记录的日期时间将代表0.0小时。

这是我的意思的一些例子:

  1. 2017-01-05 08:00:00 =点应在轴X上显示0.0小时
  2. 2017-01-05 08:30:00 =点应在轴X上显示0.5小时
  3. 2017-01-05 09:00:00 =点应在X轴上显示1.0小时
  4. 2017-01-05 09:30:00 =点应在轴X上显示1.5小时
  5. 2017-01-05 10:00:00 =点应在轴X上显示2.0小时
  6. 2017-01-05 10:30:00 =点应在轴X上显示2.5小时
  7. ETC ............
  8. 基本上,图表显示了我在数据库中开始和停止记录我的值之间发生的事情。更重要的是要知道自录制开始以来必须经过多少时间。

    那么,DBChart中是否有一个函数或其他方法可以帮助我做到这一点?

    感谢您的帮助

1 个答案:

答案 0 :(得分: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;