コントロールのダブルクリック時にクリックの処理をしないようにするには?

解決


  2003-02-14 02:01:23  No: 77088

コントロールをダブルクリックしたとき、
クリックイベントの処理をせずに、
ダブルクリックイベントの処理をしたいのですが、
方法がわからずにいます。
どなたか、方法をご教授ください。

クリックイベントとダブルクリックイベントには
それぞれ処理があります。


nanashi  2003-02-14 04:09:02  No: 77089

ムリじゃないッスか?


たかみちえ  URL  2003-02-14 04:50:55  No: 77090

できなくはなさそうな気がします。
クリックイベントなどを、MouseDownなどを使うことで全部自分で管理し、
連続でクリックされた回数をカウントした後、動作を実行すれば。
  そういうソフトもいくつか見たことあります。
(TClockなど。これでは、シングル,ダブルのほか、トリプルクリックなどを判断することから、自分で管理してるんだと思います)

  ただ、とても簡単とはいえないコーディングになると思います。
  ユーザーとしても、その境界線があいまいになるので、
できれば、その設計を変える方向で考えたほうがいいのではないでしょうか?


魔界の仮面弁士  2003-02-14 05:33:41  No: 77091

自分で管理する場合は、MouseUpイベントにて、座標、クリックされたボタン、
そして、前回発生したMouseUpからの経過時間を管理するすれば OK かと。

なお、ダブルクリックに必要な時間間隔に付いては、
   SystemParametersInfo API + SPI_SETDOUBLECLICKTIME 定数
で求める事ができます。
また、ダブルクリック中における、マウスの許容移動範囲に付いては、
   SystemParametersInfo API + SPI_SETDOUBLECLKHEIGHT 定数
   SystemParametersInfo API + SPI_SETDOUBLECLKWIDTH 定数
で得る事ができます。

なお、これらの値はアプリの実行中に変更される可能性がありますので、
起動時にForm_Load等で調べるだけではなく、システム情報(SysInfo)コントロールの
イベントなども併用するようにすれば、動的な変更にも対応させられるかと思います。


魔界の仮面弁士  2003-02-14 05:37:45  No: 77092

# 訂正……。

>   SystemParametersInfo API + SPI_SETDOUBLECLICKTIME 定数
>   SystemParametersInfo API + SPI_SETDOUBLECLKHEIGHT 定数
>   SystemParametersInfo API + SPI_SETDOUBLECLKWIDTH 定数

すいません。これらは時間間隔や許容範囲を「設定」するものですね。

時間間隔の取得は、
  GetDoubleClickTime API
そして、許容範囲の取得は、
  GetSystemMetrics API + SM_CXDOUBLECLK 定数
  GetSystemMetrics API + SM_CYDOUBLECLK 定数
で行ってください。m(_ _)m


  2003-02-15 07:09:09  No: 77093

何とかAPIを使い制御することが出来ました。

どうもありがとうございました。
またよろしくお願いします。


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

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






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