ボタンのシングルクリックとダブルクリックを区別したい

解決


中井  2014-02-28 00:23:32  No: 46091  IP: [192.*.*.*]

DelphiXE5を使っています。

ボタンをクリックすると別のアプリを起動するようにしています。
たまに、ダブルクリックする人がいて、アプリが2個起動してしまいます。

ボタンのシングルクリックとダブルクリックを区別する方法はありますでしょうか。

ご助言をよろしくお願いします。

編集    削除
DEKO  2014-02-28 08:57:07  No: 46092  IP: [192.*.*.*]

質問の内容とは異なりますが、

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.OnClick:= nil;
  try
    // 処理
  finally
    Button1.OnClick := Button1Click;
  end;
end;

こんな感じで解決すると思います。

編集    削除
中井  2014-03-01 02:55:08  No: 46093  IP: [192.*.*.*]

DEKOさん
参考になりました。
ありがとうございました。

行う処理が「他のアプリ起動」なので2重起動してしまうので、
ご助言頂いたコードにSleepを挟んだり、
Button1.EnabledをFalseにしたり、と色々試みましたが、
それでもダブルクリックを受け付けてしまいました。

それなら「受け付けた後に処理をしてみよう」と思い、
結果、Timerを使って解決することができました。

考え方を知る良いきっかけになりました。
ありがとうございました。


----
{ Private 宣言 }
  blBlockWClick : Boolean;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  blBlockWClick := false;
  BlockWClick.Enabled := false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if blBlockWClick then exit;
  //Timer1.Interval :=1000;
  blBlockWClick := true;
  Timer1.Enabled := true;
  //処理

end;

編集    削除