Lazarus 時刻を設定し時刻になったらイベントを発生する

予約設定時間になった時に処理をする仕組みを作ってみる

環境
Ubuntu16
Lazarus 2.0.10

参考ページ
https://www.ipentec.com/document/delphi-get-now-datetime
https://www.ipentec.com/document/delphi-datetime-to-string
http://mrxray.on.coocan.jp/Delphi/plSamples/004_TimerTest.htm

ポイント
・現時刻を書式設定で文字列に変換
・タイマーで、毎回(2秒毎に)チェックを行う
・状態変数を持ち、変化時のみにイベント処理をできるようにする

プログラム

private
    fltime:integer;
 
procedure TForm1.Button1Click(Sender: TObject);
//https://www.ipentec.com/document/delphi-get-now-datetime
//https://www.ipentec.com/document/delphi-datetime-to-string
//http://mrxray.on.coocan.jp/Delphi/plSamples/004_TimerTest.htm

var
  dt:TDateTime;
  str:string;
begin
  dt:=Now;
  DateTimeToString(str, 'HH:mm',dt);
  Edit2.Text:=str;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  edit3.Text:=Combobox1.Text+':'+Combobox2.Text;
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
  ComboBox1Change(Sender);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  fltime:=0;
  combobox1.ItemIndex:=0;
  combobox2.ItemIndex:=0;
  ComboBox1Change(Sender);
  timer1.Enabled:=True;
  timer1.Interval:=2000; //2000ミリ秒(2秒)ごとに処理を行う
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Button1Click(Sender);
  if edit3.Text=edit2.Text then
   begin
   if fltime=0 then
    begin
    MessageDlg('メッセージ', mtInformation, [mbYes], 0);
    fltime:=1;
    end;
   end
  else
  fltime:=0;
end;  

設定(初期設定)
Combobox1
00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23
Combobox2
00,05,10,15,20,25,30,35,40,45,50,55
を、
オブジェクトインスペクタ
プロパティ
Items
Stringエディタから
初期値を設定