Delphi 和 Teechart - 在 X 轴上更改运行时的日期时间
Delphi and Teechart - change date-time for a runtime on the X-axes
目前,我得到了一个带有多行系列的 DBChart。我将每条记录的日期时间放在 x 轴上。
现在,我需要更改运行时的日期时间。所以基本上,第一个记录的日期时间将代表 0.0 小时。
这是我的意思的一些例子:
- 2017-01-05 08:00:00 = 点应在 X 轴上显示 0.0 小时
- 2017-01-05 08:30:00 = 点应在 X 轴上显示 0.5 小时
- 2017-01-05 09:00:00 = 点应在 X 轴上显示 1.0 小时
- 2017-01-05 09:30:00 = 点应在 X 轴上显示 1.5 小时
- 2017-01-05 10:00:00 = 点应在 X 轴上显示 2.0 小时
- 2017-01-05 10:30:00 = 点应在 X 轴上显示 2.5 小时
- 等等......
基本上,该图表显示了我开始和停止在数据库中记录我的值之间发生的情况。更重要的是要知道自录音开始以来时间已经过去了多少。
那么,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;
目前,我得到了一个带有多行系列的 DBChart。我将每条记录的日期时间放在 x 轴上。
现在,我需要更改运行时的日期时间。所以基本上,第一个记录的日期时间将代表 0.0 小时。
这是我的意思的一些例子:
- 2017-01-05 08:00:00 = 点应在 X 轴上显示 0.0 小时
- 2017-01-05 08:30:00 = 点应在 X 轴上显示 0.5 小时
- 2017-01-05 09:00:00 = 点应在 X 轴上显示 1.0 小时
- 2017-01-05 09:30:00 = 点应在 X 轴上显示 1.5 小时
- 2017-01-05 10:00:00 = 点应在 X 轴上显示 2.0 小时
- 2017-01-05 10:30:00 = 点应在 X 轴上显示 2.5 小时
- 等等......
基本上,该图表显示了我开始和停止在数据库中记录我的值之间发生的情况。更重要的是要知道自录音开始以来时间已经过去了多少。
那么,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;