Android 上でのボタン連打禁止 (Delphi)
アプリでボタンの連打を禁止する方法として、ぱっと考え付くのが Button を一定時間 Disable にする、たとえば
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled := False;
Sleep(1000);
Button1.Enabled := True;
end;
こんな処理です。が、この場合連打したキーはプールされていて実行されてしまうのです。
うーん簡単な方法で、できないかなー...
OnClick イベント自体を破棄するような方法でないと...
で、考えてみた...HitTest プロパティが使えるのではないかと...
そして Sleepではなく Timer を使うと良いのではないかと...
その結果
TTimer の Interval プロパティに連打を受け付けない時間をセットして、Enabled を False にする
Timer の OnTimer で
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// 復活の呪文
Button1.Enabled := True;
Button1.HitTest := True;
Timer1.Enabled := False; // Timer停止
end;
Button の OnClick 側は
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.HitTest := False;
Button1.Enabled := False;
Timer1.Enabled := True; // Timer始動
end;
としてみたところ、一応希望していた感じにはなりました。
無名メソッドとか使うとよさげな気もするのですが、OnClick の中で待ちに入ると連打分がプールされる気がする
他にあればおせーて (^^;;;
Author And Source
この問題について(Android 上でのボタン連打禁止 (Delphi)), 我々は、より多くの情報をここで見つけました https://qiita.com/CYonezawa/items/dbdcb79a065be5a14686著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .