Listbox mit MouseUp funktioniert nicht

11/04/2008 - 15:04 von Lorenz Hölscher | Report spam
Hallo NG'ler,

ich möchte in einem Access-Formular (2003 oder 2007 ist egal) beim
Klick auf ein Listenfeld die Shift/Ctrl-Taste erfahren, also muß ich
MouseUp benutzen. Allerdings findet das vor Click statt, daher hat der
Listenfeld-Value noch nicht gewechselt.

Wenn ich also den folgenden Code benutze:
________________________
Private Sub Liste0_MouseUp(Button As Integer, Shift As Integer, X As
Single, Y As Single)
MsgBox Me.Liste0.Value
End Sub
________________________

dann gibt's beim ersten Aufruf einen Fehler (wegen Null) und danach
immer den vorher markierten Wert statt des angeklickten. Das ist
unbrauchbar.

Die Hilfe dazu verspricht nicht nur Konstanten, die es gar nicht gibt
(fmButtonLeft -> vbKeyLButton!), sondern behauptet außerdem noch, die
mausbezogenen Ereignisse tràten in dieser Reihenfolge auf:
- MouseDown
- MouseUp
- Click
- DblClick
- MouseUp
Da ist nicht nur der zweifache Aufruf von MouseUp überraschend,
sondern auch schlicht falsch. Mein Test sagt:
- MouseDown
- MouseUp
- BeforeUpdate
- AfterUpdate
- Click

Lang erlàutert und kurz gefragt: wo ist mein Denkfehler oder geht es
einfach nicht ohne API-Tricks, für den Klick in ein Listenfeld die
Zusatztaste UND den angeklickten Inhalt zu erfahren?

tschö, Lorenz
 

Lesen sie die antworten

#1 Oliver Straub
11/04/2008 - 15:20 | Warnen spam
Hallo,

"Lorenz Hölscher" schrieb
ich möchte in einem Access-Formular (2003 oder 2007 ist egal) beim
Klick auf ein Listenfeld die Shift/Ctrl-Taste erfahren, also muß ich
MouseUp benutzen. Allerdings findet das vor Click statt, daher hat der
Listenfeld-Value noch nicht gewechselt.

[...]

Lang erlàutert und kurz gefragt: wo ist mein Denkfehler oder geht es
einfach nicht ohne API-Tricks, für den Klick in ein Listenfeld die
Zusatztaste UND den angeklickten Inhalt zu erfahren?


einfach den Wert in einer Modulvariablen zwischenspeichern:

Private tmpMButton as integer

Private Sub Liste0_MouseUp(Button As Integer, Shift As Integer, X As
Single, Y As Single)
tmpMButton = Button
End Sub

Dann kannst Du den Wert im Click-Event abfragen.

Gruss
Oliver

Ähnliche fragen