ボタンのクリックを制限するには〜??

解決


理恵  2004-01-08 01:31:36  No: 6570

初歩的な質問で申し訳ないのですが、
ボタンの二度押しを防止したいのですが、
どなたかご教授お願いします。


二度押し君  2004-01-08 02:12:38  No: 6571

Procedure Form1.Button1Click();
Begin
Button1.Enabled:=False;
//
//なにかの処理中なので押しちゃだめ
//
Button1.Enabled:=True;
End;


理恵  2004-01-08 03:12:20  No: 6572

説明が、たりなくて申し訳ありません。

二度押し君さんの言われている方法やっているのですが
確かに、Button1Clickイベントが、流れているときは、
クリックできないようです。

しかし、何回かクリックすると、一回目のButton1Clickイベントが
ながれた後に
クリックした回数だけ、Button1Clickイベントがはしっているみたいののですが・・・・・・・

プログラムが、はしっているButton1.Enabled:=False;中にクリックすると
クリックはできないのですが、
Button1.Enabled:=True;となりプログラムが最後までながれた後に
Button1.Enabled:=False;中にクリックされた回数だけ、
Button1Clickイベントがはしっているようなのですが・・・・・

結果的にButtonを何回か押せているのと同じ状況になっているのですが
どなたかお願いします。


Halbow  URL  2004-01-08 03:56:10  No: 6573

Halbow です。

最後の 

Button1.Enabled:=True;

を取ってしまえば、絶対に二度押しできません。


二度押し君  2004-01-08 04:32:10  No: 6574

Procedure Form1.Button1Click();
begin
  if (buttonを押してもいい条件) then begin
    //
    //なにかの処理中
    //
  end;
end;

または、ButtonのVisbleを処理中だけFalseにするのはだめですか?


にしの  2004-01-08 04:58:07  No: 6575

Button1.Enabled:=True;
の前に、
Application.ProcessMessages;
を実行してみては?


理恵  2004-01-08 17:25:56  No: 6576

みなさまありがとうございます。
Button1.Enabled:=True;
をはずせば、確かに二度押しは制御できるのですが
プログラムがながれたあとに再びボタンを押すことができないので
最後に、Button1.Enabled:=True;
は追加する必要があります。

Application.ProcessMessages;
を追加して、実行すると、思うように動くようになりました。
この処理にどのような意味があるのでしょうか?
勉強のため、ご教授お願いします。


にしの  2004-01-08 18:14:05  No: 6577

ボタンが押されると、メッセージがとばされます。
メッセージは、「空いている時間」を使って処理されます。
クリックイベント中は、メッセージの処理がされません。明示的にメッセージを処理させるには、Application.ProcessMessages;を実行します。


にしの  2004-01-08 18:14:43  No: 6578

メッセージがとばされる=PostMessageされる、です。
Skipではないです。
# 読んでみて曖昧だったので・・・


理恵  2004-01-08 19:38:53  No: 6579

にしのさん、ありがとうございます。
大変勉強になりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加