Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: drnicolas am November 09, 2023, 09:16:36

Titel: Listview Click vs. Doubleclick
Beitrag von: drnicolas am November 09, 2023, 09:16:36
Ein Listview stellt eine Dateiliste dar.
Wenn ich nun eine Zeile anklicke, dann wirde der inhalt der Datei (durchweg PDFs) in einem Web-browser-Control dargestellt. Funktioniert.

nun möchte ich aber per Doppelkick die Datei im Foxit-reader öffnen lassen. Das geht aber nicht.
Anscheinend wird der Doppelklick zu 2x Click-Eriegnissen aufgelöst.

Manchmal scheint ein Dreifach-klick die gewünschte reaktion auszulösen. Das ist aber unzuverlässig.

Wie kann man das Problem angehen?
Titel: Re: Listview Click vs. Doubleclick
Beitrag von: andyfau am November 09, 2023, 09:35:11
Hallo,
hast Du überprüft, ob nur im Ereignis "bei Doppelklicken" eine Prozedur/Funktion, bzw.ein Makro eingetragen ist?
Gruß
Andreas
Titel: Re: Listview Click vs. Doubleclick
Beitrag von: ebs17 am November 09, 2023, 12:46:39
Man kann beim Klick-Ereignis (u.a.) auch auf gedrückte Sondertasten (Ctrl, Shift, Alt) prüfen und dann fallabhängig auswerten.
Titel: Re: Listview Click vs. Doubleclick
Beitrag von: drnicolas am November 09, 2023, 12:59:05
Definitiv liegt VBA-Code sowohl hinter dem Click wie auch hinter dem Double-Click-Ereignis.

Private Sub lst_Dateien_Click()
Debug.Print "Click"
    Debug.Print Me.lst_Dateien.Column(1)
    Dim xx As Object
   
    Set xx = Me.ctl_web.Object
   
    If IsNull(Me.lst_Dateien.Column(1)) = 0 Then
         xx.Navigate Me.lst_Dateien.Column(1)
    End If
End Sub

Private Sub lst_Dateien_DblClick(Cancel As Integer)
    Debug.Print "DoubleClick"
    Debug.Print Me.lst_Dateien.Column(0)
    Stop
    'Call ShellExecute(0, "open", "C:\Daten\_1005176201_4500160101_MAAD.pdf", "", "", SW_MAXIMIZE)
   
   
End Sub
Titel: Re: Listview Click vs. Doubleclick
Beitrag von: andyfau am November 09, 2023, 14:57:41
Das funzt nicht. Ist ein Klickereignis hinterlegt, wird dies zuerst ausgewertet. Der folgende Doppelklick ist Glücksache....., bzw. hab es gerade mal probiert, geht nicht.

Gruß
Andreas
Titel: Re: Listview Click vs. Doubleclick
Beitrag von: Beaker s.a. am November 10, 2023, 17:25:04
ZitatMan kann beim Klick-Ereignis (u.a.) auch auf gedrückte Sondertasten (Ctrl, Shift, Alt) prüfen und dann fallabhängig auswerten.
Ist m.E. auch die sicherste Lösung. Oder man entwirft eine eigenes Kontextmenu
für die Liste.
Titel: Re: Listview Click vs. Doubleclick
Beitrag von: drnicolas am November 13, 2023, 07:42:32
@andyfau: Das scheint wirklich so zu sein. Wäre eigentlich auch logisch. Nur unschön.

Gibt es irgendwo eine gute Anleitung für ein Kontextmenü? Ich weiß nur - es ist kompliziert.

Aktuell habe ich das problem  über einen "öffnen"-Button gelöst. Nicht das, was cih wollte, aber es funktioniert.


Titel: Re: Listview Click vs. Doubleclick
Beitrag von: trebuh am November 13, 2023, 09:11:57
Hmmm...
Könnte man im "Bei Klicken"-Ereignis was programmieren, was die Zeit zwischen den "Klicks" vergleicht, und auswertet?

Bei Klick 1 wird ein Timer gestartet, und wenn Klick2 innerhalb von x- Millisekunden folgt, dann gilt es als Doppelklick, und ansonsten als Einzelklick.

Ist halt auch etwas tricky, da man dann bei Einzelklicks langsamer arbeiten muss.

Von daher halte ich die Aussage von Eberhard auch für besser.

Titel: Re: Listview Click vs. Doubleclick
Beitrag von: ebs17 am November 16, 2023, 10:58:18
' Abfrage nach Sondertasten
Public Declare Function GetKeyState% Lib "user32" (ByVal vkey As Long)
'If Abs(GetKeyState(16) < 0) And Abs(GetKeyState(17) < 0) And Abs(GetKeyState(18) < 0) Then
'    MsgBox "SHIFT + STRG + ALT gedrückt", 64
'ElseIf Abs(GetKeyState(16) < 0) And Abs(GetKeyState(17) < 0) Then
'    MsgBox "SHIFT + STRG gedrückt", 64
'ElseIf Abs(GetKeyState(16) < 0) And Abs(GetKeyState(18) < 0) Then
'    MsgBox "SHIFT + ALT gedrückt", 64
'ElseIf Abs(GetKeyState(17) < 0) And Abs(GetKeyState(18) < 0) Then
'    MsgBox "STRG + ALT gedrückt", 64
'ElseIf Abs(GetKeyState(16) < 0) Then
'    MsgBox "SHIFT gedrückt", 64
'ElseIf Abs(GetKeyState(17) < 0) Then
'    MsgBox "STRG gedrückt", 64
'ElseIf Abs(GetKeyState(18) < 0) Then
'    MsgBox "ALT gedrückt", 64
'Else
'    MsgBox "Keine Taste gedrückt!", 64
'End If