Bonjour,

J'ai un label qui lorsque je passe dessus lui donne un aspect bouton, et au bout d'une seconde, reviens à son état original. Ca marche, mais avec l'évenement mousemove, lorsque je bouge la souris sur le label, la procédure est toujours appelé et donc mon label clignote entre aspect bouton/original. Je souhaite soit a la fin de la procédure de la procédure dans le form ou le module, bloqué l'evenement mousemove, et lorsque le timer débloqué l'évenement mousemove du label.

J'ai cherché, peut-être pas assez, de solutions sur le site et sur internet

Avez-vous une idée ?

Voici la procédure dans mon form :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call AspectBouton(Frm_Connexion, Label1, Tim_Label1)
'        bloquer Ctl.MouseMove ??
End Sub
 
Private Sub Tim_Label1_Timer()
Call AspectBouton(Frm_Connexion, Label1, Tim_Label1)
'        débloquer Ctl.MouseMove ??
End Sub

Et la procédure du module appelée en vous passant les détails :
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
28
29
30
31
Option Explicit
Public Const RELIEF = 1
Public Const ENCADREMENT = 2
Public CtlPasséDessus As Boolean 'on voit si on est passé ou non sur le controle
Public iTim As Integer 'compte les secondes du timer lancé
 
Public Const CouleurFondOriginale = &H8000000F
Public Const CouleurFondTemporaire = &H80FFFF 'nimporte quelle couleur sauf la CouleurFondOriginale, ne se voit pas a l'écran, car sinon le label n'affiche plus le texte contenu
 
Public Sub AspectBouton(Frm As Form, Ctl As Control, Tim As Timer)
 
If CtlPasséDessus = False Then 'passage de la souris sur le controle, on envoi l'aspect bouton
   CtlPasséDessus = True
   Call Ombrage(Frm, Ctl, ENCADREMENT, 10, &H80000011) 'gris foncé
   Call Ombrage(Frm, Ctl, RELIEF, 10, &H80000005) '&H80000005) blanc vista '&H80000009) 'blanc W2000
   Tim.Enabled = True
'        bloquer Ctl.MouseMove ??
 
 
Else 'une seconde après l'aspect bouton, on revient à l'aspect original du controle
   iTim = iTim + 1 'on suppose que l'intervalle du Timer est à 1000 ms
   If iTim = 2 Then
      Call Ombrage(Frm, Ctl, ENCADREMENT, 10, &H8000000F) 'gris normal
      Call Ombrage(Frm, Ctl, RELIEF, 10, &H8000000F) 'gris normal
      Tim.Enabled = False
      CtlPasséDessus = False '1 seconde après le passage de la souris, retour a l'aspect initial du contrôle
      iTim = 0
'         débloquer Ctl.MouseMove ??
   End If
End If
End Sub

Bonne soirée