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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager