PDA

Vollständige Version anzeigen : Ribbon Button und Taste


Smashi
09.05.2011, 13:42
Hallo zusammen,

ich bin gerade dabei mein altes Startformular durch ein Ribbon zu ersetzen. Nun bin ich auf folgendes Problem gestoßen.

Mein alter Code sieht so aus:
Private Sub cmdfrmFertigstellung_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Shift = 1 Then
DoCmd.OpenForm "frmFertigstellung"
DoCmd.GoToRecord , , acNewRec
Me.Visible = False
Else
MsgBox "Sie haben keine Berechtigung für diesen Bereich!", vbInformation + vbOKOnly, "Information"
End If

End Sub

Wie kann ich das mit der Shift Taste auch auf einem Button im Ribbon anwenden?

Danke und Gruß

Josef P.
09.05.2011, 15:58
Hallo!

Auf die Umschalttaste kannst du (glaube ich zumindest) im Ribbon nicht reagieren - zumindest wüsste ich nicht, wie das über Callback-Funktion weitergeben würde.
Ich nehme aber an, dass man notfalls per API die gedrückt gehaltene Taste ermitteln kann.

Wobei mir der Code aus Beitrag #1 etwas eigenartig vorkommt.
Für mich steht dort, dass der User nur solange keine Berechtigung habe, bis er die Umschalttaste gedrückt hält.
=>
Falls du nur jemanden mit Berechtigung auf die Ribbon-Schaltfläche klicken lassen willst, würde ich die Schaltfläche entweder ausblenden oder deaktivieren, wenn keine Berechtigung vorhanden ist.
Es ist doch lästig, wenn man als User einen Button anklickt und erst danach erfährt, dass man kein Recht dazu hat. ;)

mfg
Josef

Thomas Möller
09.05.2011, 17:23
Hallo!

Ich nehme aber an, dass man notfalls per API die gedrückt gehaltene Taste ermitteln kann.

dazu kann man die Funktion GetAsyncKeyState verwenden:
Declare Function GetAsyncKeyState Lib "user32" ( _
ByVal vKey As Long) As Integer
Der KeyCode für die Shifttaste lautet wie folgt:

Const VK_SHIFT = &H1o

Ergänzende Informationen finden sich hier:
http://www.vbarchiv.net/api/api_getasynckeystate.html

CU