予約設定時間になった時に処理をする仕組みを作ってみる
環境
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エディタから
初期値を設定