Comment mettre le focus sur un item d'une zone de liste par un clic droit ?
Bonjour à tous,
Voilà mon souci d'aujourd'hui, lol...
J'ai un formulaire avec une zone de liste.
Si l'utilisateur clique avec le bouton gauche, l'item de la liste est mis en surbrillance.
Si l'utilisateur clique avec le bouton droit, mon menu contextuel apparait.
Mon problème est que si l'utilisateur clique droit tout de suite sans passer par le clic gauche, alors l'action liée au menu contextuel se réalise sur l'item où à eu lieu le dernier clic gauche, et non sur l'item où a été fait le clic droit.
Comment faire pour que si l'utilisateur clique droit, alors automatiquement le focus se mette sur cet item (et par conséquent l'action se déclenche sur le bon item) ?
Merci de votre aide.
Voici le code:
Code:
1 2 3 4 5 6 7
| Private Sub LstI1done_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim I1performedA As Boolean
Dim I1performedB As Boolean
I1performedB = False
I1performedA = True
If Button = 2 Then Call CreeContext(I1performedB, I1performedA)
End Sub |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| Sub CreeContext(I1performedB As Boolean, I1performedA As Boolean)
Dim CB As CommandBar
Dim C As CommandBarButton
On Error Resume Next
CommandBars("MonContextuel").Delete
On Error GoTo 0
Set CB = CommandBars.Add(Name:="MonContextuel", Position:=msoBarPopup, temporary:=True)
Debug.Print "I1performedB= " & I1performedB & ", I1performedA= " & I1performedA
With CB
Set C = .Controls.Add(Type:=msoControlButton)
If I1performedB = True Then
With C
.OnAction = "AddCorrectionI1"
.FaceId = 3272
.Caption = "Demande de correction effectuée"
End With
End If
If I1performedA = True Then
With C
.OnAction = "AddOtherCorrectionI1"
.FaceId = 1074
.Caption = "Relance demande de correction"
End With
End If
.ShowPopup
End With
End Sub |
Code:
1 2 3 4 5 6
| Sub AddOtherCorrectionI1(Optional dummy As Byte)
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO T_CORRECTIONS (TypeCorrection, DateDemande, IdInterne)" & _
" VALUES ('I1', now(), " & Form_Inc.LstI1done & ");"
Form_Inc.LstI1done.Requery
End Sub |