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?
Hallo,
hast Du überprüft, ob nur im Ereignis "bei Doppelklicken" eine Prozedur/Funktion, bzw.ein Makro eingetragen ist?
Gruß
Andreas
Man kann beim Klick-Ereignis (u.a.) auch auf gedrückte Sondertasten (Ctrl, Shift, Alt) prüfen und dann fallabhängig auswerten.
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
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
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.
@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.
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.
' 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