如何使用 TimeEdit 触发通知

How to fire notification using TimeEdit

我正在尝试使用 TimeEdit 在特定时间触发通知,但没有成功! 我使用的代码..

try
MyNot.Name := Edit1.Text;
MyNot.AlertBody := Edit2.Text;
MyNot.FireDate := Now + TimeEdit1.Time;
NotificationCenter1.ScheduleNotification(MyNot);
Finally
MyNot.DisposeOf;

我正在使用 Delphi10 Seattle Update1。

Now() returns一个TDateTime表示当前时钟date/time。然后,您将添加用户输入的相对于当前 date/time 的时间。例如,如果用户输入 00:05:00,您将在当前 date/time.

的基础上增加 5 分钟

如果您希望通知在当前日期的 特定 时间触发,请使用 Date() 函数而不是 Now() 函数,以便您要添加相对于午夜 (00:00:00am) 的输入时间:

MyNot.FireDate := Date + TimeEdit1.Time;

或者,您可以改用 SysUtils.ReplaceTime() 函数:

var
  dt: TDateTime;

dt := Date;
ReplaceTime(dt, TimeEdit1.Time);
MyNot.FireDate := dt;

这还有一个额外的好处,那就是您可以配置任何您想要的日期,例如 SysUtils.EncodeDate() 函数:

var
  wYear, wMonth, wDay: Word;
  dt: TDateTime;

wYear := ...;
wMonth := ...;
wDay := ...;
dt := EncodeDate(wYear, wMonth, wDay) + TimeEdit1.Time;
MyNot.FireDate := dt;

或:

var
  wYear, wMonth, wDay: Word;
  dt: TDateTime;

wYear := ...;
wMonth := ...;
wDay := ...;
dt := EncodeDate(wYear, wMonth, wDay);
ReplaceTime(dt, TimeEdit1.Time);
MyNot.FireDate := dt;