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