CommandButton でダブルクリック |
CommandButton でダブルクリックを取得する (274) | |
Form に Command1 を貼り付けておいて下さい。 | |
Option Explicit 'SampleNo=274 WindowsXP VB6.0(SP5) 2003.04.02 'マウスのダブルクリックの間隔を取得する(P1042) Private Declare Function GetDoubleClickTime Lib "user32" () As Long Private nClick As Integer 'マウスクリックのカウント用 Private Sub Command1_Click() 'ダブルクリックを感知する Dim sngSt As Single nClick = nClick + 1 'マウスのダブルクリックの間隔を考慮(0.18〜0.9) sngSt = Timer + GetDoubleClickTime / 1000 If sngSt >= 86400 Then sngSt = sngSt - 86400 End If '場合によっては待機時間を調整して下さい。 'APIを使用しないなら0.18〜0.9秒の範囲で待機して下さい。 Do While Timer < sngSt DoEvents Loop If nClick = 1 Then 'シングルクリックイベントの処理 MsgBox "シングルクリックです。" ElseIf nClick >= 2 Then ' = 2 でもいいかも 'シングルクリックイベントの処理 'クリックイベントが発生してからダブルクリックイベントが発生するので '必要によってはここにもシングルクリックの処理を記入して下さい。 MsgBox "シングルクリックです。" 'ダブルクリックイベントの処理 MsgBox "ダブルクリックです。" End If nClick = 0 End Sub |
|
VBのCommandButton にはダブルクリックイベントがないので擬似的にシングルクリックと ダブルクリックを分けて取得できるようにしました。通常ダブルクリックの間隔は0.18〜0.9秒 の 間で設定されています。APIを使用しないならその範囲内で設定して下さい。 Timer を使って時間を測定しておりますので 0時にリセットされます。真夜中にクリック をされても問題ないように一応考慮はしていますが?。 |
2003/04/20