Seltsames Verhalten von KeyDown

29/07/2008 - 19:29 von Michael König | Report spam
Hallo Newsgroup,

ich möchte in einem tabellarischen Unterformular (Access 2000)
ermöglichen, dass mit den Tasten [Strg]+[Pos1] zum ersten Datensatz, mit
[Strg]+[Ende] zum letzten Datensatz gesprungen wird. Die Tastenvorschau
des Formulars habe ich auf "Ja" gestellt und die unten angefügte
Ereignisprozedur für das Formular-Ereignis "Bei Taste Ab" erstellt.
Nun passiert Folgendes: sowie ich die Taste [Strg] drücke - also noch
ehe ich auf [Pos1] oder [Ende] drücke, wird sofort der erste Datensatz
angesprungen, der Keycode wird gar nicht ausgewertet.
Woran kann das liegen?

Gruß
Michael

Hier die Ereignisprozedur:
'--
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'--

Dim intShiftDown As Integer
Dim intCtrlDown As Integer

intShiftDown = (Shift And acShiftMask) > 0
intCtrlDown = (Shift And acCtrlMask) > 0

If KeyCode = vbKeyDown Then
KeyCode = 0
DoCmd.GoToRecord , , acNext
ElseIf KeyCode = vbKeyUp Then
KeyCode = 0
DoCmd.GoToRecord , , acPrevious
ElseIf intCtrlDown And vbKeyHome Then
KeyCode = 0
DoCmd.GoToRecord , , acFirst
ElseIf intCtrlDown And vbKeyEnd Then
KeyCode = 0
DoCmd.GoToRecord , , acLast
End If

End Sub

'-
 

Lesen sie die antworten

#1 Karl Donaubauer
29/07/2008 - 21:07 | Warnen spam
Michael König wrote:
...
Nun passiert Folgendes: sowie ich die Taste [Strg] drücke - also noch
ehe ich auf [Pos1] oder [Ende] drücke, wird sofort der erste Datensatz
angesprungen, der Keycode wird gar nicht ausgewertet.
...
'--
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'--

Dim intShiftDown As Integer
Dim intCtrlDown As Integer

intShiftDown = (Shift And acShiftMask) > 0
intCtrlDown = (Shift And acCtrlMask) > 0

If KeyCode = vbKeyDown Then
KeyCode = 0
DoCmd.GoToRecord , , acNext
ElseIf KeyCode = vbKeyUp Then
KeyCode = 0
DoCmd.GoToRecord , , acPrevious
ElseIf intCtrlDown And vbKeyHome Then
KeyCode = 0
DoCmd.GoToRecord , , acFirst
ElseIf intCtrlDown And vbKeyEnd Then
KeyCode = 0
DoCmd.GoToRecord , , acLast
End If

End Sub



Bei deinen Prüfungen auf Tastenkombinationen hast du keinen
Vergleichsausdruck. Das müsste heißen:

ElseIf KeyCode = intCtrlDown And vbKeyHome Then

ElseIf KeyCode = intCtrlDown And vbKeyEnd Then

HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
Access-Entwickler-Konferenz: www.donkarl.com/?AEK
SQL Server-Entwickler-Konferenz: www.donkarl.com/?SEK

Ähnliche fragen