2

ユーザーがボタンを含むほぼすべてのものをダブルクリックすると、アプリケーションで問題が発生します。状況によっては、ボタンで OnClick イベントが 2 回発生するため、ユーザーが意図していない事態が発生することがあります。アプリケーション全体でこれを防ぐための 1 つのアイデアが提起されました。これを使用する際の落とし穴があるかどうかを知りたいです。

に を追加し、onの設定にTApplicationEvents実装します。OnMessageHandledWM_LBUTTONDBLCLKTButtonTrue

このようなもの:

function GetWindowClassName(Handle: HWND): String;
var
  Buffer: array[0..255] of Char;
begin
  if GetClassName(Handle, @Buffer, 255) = 0 then
    RaiseLastOSError;
  Result := Buffer;
end;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
  if Msg.message = WM_LBUTTONDBLCLK then
    Handled := (GetWindowClassName(msg.hwnd) = 'TButton');
end;

明らかな欠点の 1 つは、ユーザーが実際に同じボタンを急いでクリックしたい状況がある場合です。それがこの特定のアプリケーションに当てはまるかどうかは、まだ調査されていません。

4

1 に答える 1