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

Delphi and Teechart - change date-time for a runtime on the X-axes

目前,我得到了一个带有多行系列的 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. 等等......

基本上,该图表显示了我开始和停止在数据库中记录我的值之间发生的情况。更重要的是要知道自录音开始以来时间已经过去了多少。

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

感谢您的帮助

您可以使用 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;