Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Hondo am Oktober 08, 2016, 10:25:20

Titel: Double Klick auf Button löst zusätzlich 2x klick aus.
Beitrag von: Hondo am Oktober 08, 2016, 10:25:20
Hallo,
habe verschiedene Buttons mit dem Klick-Ereignissen =btnklick(x,False) und dem DoubleKlick Ereignis =btnklick(x,True)
Unterschieden nach dem 2. Parameter hab ich mal per debug.print die Eventauslösung protokolliert:

Private Function btnclick(ByVal num As Long, ByVal dblklick As Boolean)
    If dblklick Then
        Debug.Print "dblklick"
    Else
        Debug.Print "klick"
    End If
End Function


Ergebnis im Direktfenster beim doppelt klicken:
klick
dblklick
klick


d.h. ein doubleklick löst auch immer ein klick-Event aus oder was?
Gruß Andreas

Titel: Re: Double Klick auf Button löst zusätzlich 2x klick aus.
Beitrag von: DF6GL am Oktober 08, 2016, 10:52:31
Hallo Andreas,


Zitatein doubleklick löst auch immer ein klick-Event aus


genau so....
Titel: Re: Double Klick auf Button löst zusätzlich 2x klick aus.
Beitrag von: Hondo am Oktober 08, 2016, 11:29:05
Hallo,
fällt wohl unter die Rubrik "It's not a Bug it's a Feature"
Hab das jetzt mit einem Timer gelöst:


Private doubleclicked As Boolean
Private clickednumber As Long

Private Function btnclick(ByVal num As Long)
    clickednumber = num
    If Me.TimerInterval > 0 Then
        Me.TimerInterval = 0
        RaiseEvent ItemDoubleClicked(Me.NodeCaption, Me.NodeKey, Me.IsGroup)
        doubleclicked = True
    Else
        If Not doubleclicked Then Me.TimerInterval = 150
        doubleclicked = False
    End If
End Function

Private Sub Form_Timer()
    Dim strKeys() As String
    Me.TimerInterval = 0
    strKeys = Split(Me.NodeKey, "|")
    If UBound(strKeys) = clickednumber Then   'auf richtiges Icon/Button geklickt
        If Me.ChildrenCount > 0 Then
            If Me.IsExpanded = True Then
                CollapseNode Me.NodeKey
            Else
                ExpandNode Me.NodeKey
            End If
        End If
    ElseIf clickednumber > UBound(strKeys) Then
        Me.NodeSelected = IIf(IsNull(Me.NodeSelected), True, Not Me.NodeSelected)
        RaiseEvent ItemClicked(Me.NodeCaption, Me.NodeKey, Me.IsGroup)
    End If
End Sub


Was mich ärgert ist dass man damit den Form_Timer belegt, ich hätte den lieber frei für spätere Aufgaben.
Werde dann wohl API Timer nehmen müssen.

Gruß Andreas
Titel: Re: Double Klick auf Button löst zusätzlich 2x klick aus.
Beitrag von: DF6GL am Oktober 08, 2016, 12:40:03
Hallo,

naja, ist ja in den Spez. so definiert/beschrieben:

https://msdn.microsoft.com/de-de/library/office/ff822517.aspx
Zitat
.
.
.
Durch Doppelklicken auf ein Steuerelement treten die Ereignisse Click und DblClick auf. Wenn der Fokus beim Doppelklicken noch nicht auf das Steuerelement gesetzt ist, treten vor den Ereignissen Click und DblClick zunächst die Ereignisse Enter und GotFocus für das Steuerelement auf.
.
.
.