2017-05-24 19 views
1

「オンクリック」と「オンDblクリック」の両方のイベントが記録されたmsアクセスのフォームにボタンがあります。私は、シングルクリックイベントが動作しているが、ダブルクリックが2回目のクリックで保持されない限り、私はそれを押し続けて、リリースする前にマウスをボタンから離してドラッグするという問題にぶつかっています。このボタンが何をするかは、2つの異なるクリックに応じてテキストボックスにテキストを入力することです。このダブルクリックの問題をどうやって修正できますか?ボタンのコードは次のとおりです。 Task_ID_AfterUpdate()は、Me.Task_IDがクエリーで検索することによってテキストフィールドを埋め込むことにも注意してください。ボタンをClickDblClickイベントを置くクリック時のダブルクリックイベント(VBA)を伴うMSアクセスボタン

'single click 
Private Sub getBtn_Click() 
    btnUpdateHelper (1162) 
End Sub 

'double click 
Private Sub getBtn_DblClick(cancel As Integer) 
    btnUpdateHelper (1449) 
End Sub 

Private Sub btnUpdateHelper(Task As Variant) 
    'helper method for buttons, only pass task id 
    'Me.Task_ID is a textfield 
    Me.Task_ID = Task 
    Task_ID_AfterUpdate 
End Sub 

Private Sub Task_ID_AfterUpdate() 
    Dim taskIdNum As String 
    taskIdNum = Me.Task_ID 
    'updates all fields to display the selected task 
    Me.Area = DLookup("Area", "Query", "TaskID=" & taskIdNum) 
    Me.Activity = DLookup("Activity", "Query", "TaskID=" & taskIdNum) 
    Me.Description = DLookup("Description", "Query", "TaskID=" & taskIdNum) 
    Me.Comments = DLookup("Comments", "Query", "TaskID=" & taskIdNum) 
    Me.Task_Group = DLookup("[Task Group]", "Query", "TaskID=" & taskIdNum) 
    Me.Mul = DLookup("Mul", "Query", "TaskID=" & taskIdNum) 
    Me.Time = DLookup("Time", "Query", "TaskID=" & taskIdNum) 
End Sub 
+1

これは非常に奇妙なUIデザインです。代替機能のために右クリックまたはShift +クリックのどちらかを使用することをお勧めしますか?これらを捕捉するには '_MouseDown'イベントを使います。 – Andre

+0

@Andreありがとうございました!それを回答として提出すれば、私はそれを受け入れます – Kayracer

答えて

1

IMOむしろ紛らわしいUIデザインです。代わりの機能のために、右クリックまたはShift +クリック(またはAltまたはCtrl)のどちらかを使用する方が良いでしょう。

Clickイベントでは、これらの修飾子はキャッチされません。MouseDownMouseUpのみです。アクションがMouseUpイベントプロシージャに入れられると、最も自然な感じです。

Private Sub cmdMultiClick_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 

    Dim SelectedFunction As String 

    If Button = acLeftButton Then 
     If (Shift And acShiftMask) Then 
      SelectedFunction = "Shift-Left click!" 
     Else 
      SelectedFunction = "Left click!" 
     End If 
    ElseIf Button = acRightButton Then 
     SelectedFunction = "Right click!" 
     ' Cancel the default right-click behavior (open context menu) 
     DoCmd.CancelEvent 
    End If 

    MsgBox SelectedFunction, vbInformation 

End Sub 
関連する問題