Deplacer un contrôle Frame

Le
AT
Bonjour,

J'utilise le code suivant pour permettre à l'utilisateur de déplacer
une frame de gauche à droite avec une butée de chaque coté. Le problème
est qu'arrivé à un bout le contrôle devient double avec son fantôme qui
continu à se deplacer comme si de rien n'était.

Comment faire pour éliminer cet effet ?


Private Sub frame6_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
If Frame6.Left > 7380 Then Frame6.Left = 7380: Exit Sub
If Frame6.Left < 80 Then Frame6.Left = 80: Exit Sub

If Button = 1 Then
Frame6.Left = (X * 1.2) + (Frame6.Left / 2)

Frame6.Refresh
End If


End Sub

Merci!
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LE TROLL
Le #20259681
Bonjour,

Ceci :

Sub frame6_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As
Single)
If Button <> 1 Then Exit Sub
Frame6.Left = (X * 1.2) + (Frame6.Left / 2)
If Frame6.Left > 7380 Then Frame6.Left = 7380
If Frame6.Left < 80 Then Frame6.Left = 80
Frame6.Refresh
Form1.Refresh
End Sub

Je crois que c'est normal, c'est le système qui fait ça quand on
dépasse, il suffit de relâcher et ça redevient normal.
Par contre le mécanisme de positionnement n'est pas bon, dans la mesure
où il faut tenir compte de trois éléments variables, le curseur cliquant, le
left de la frame, et la largeur de la frame pour avoir son (right)... Un
"form1.refresh" améliore le grisage...

Pour faire ça, pour la compréhension de la mise au point tu affiches en
permanence dans des textBox X, Y, Form.Left, Frame.Left et Right(Frame),
ainsi tu comprndras vite ce qu'il faut faire en fontion de ces éléments...

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"AT" news:4ac30d13$0$904$
Bonjour,

J'utilise le code suivant pour permettre à l'utilisateur de déplacer une
frame de gauche à droite avec une butée de chaque coté. Le problème est
qu'arrivé à un bout le contrôle devient double avec son fantôme qui
continu à se deplacer comme si de rien n'était.

Comment faire pour éliminer cet effet ?


Private Sub frame6_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
If Frame6.Left > 7380 Then Frame6.Left = 7380: Exit Sub
If Frame6.Left < 80 Then Frame6.Left = 80: Exit Sub

If Button = 1 Then
Frame6.Left = (X * 1.2) + (Frame6.Left / 2)

Frame6.Refresh
End If


End Sub

Merci!




AT
Le #20260021
Après mûre réflexion, LE TROLL a écrit :
Bonjour,

Ceci :

Sub frame6_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As
Single)
If Button <> 1 Then Exit Sub
Frame6.Left = (X * 1.2) + (Frame6.Left / 2)
If Frame6.Left > 7380 Then Frame6.Left = 7380
If Frame6.Left < 80 Then Frame6.Left = 80
Frame6.Refresh
Form1.Refresh
End Sub

Je crois que c'est normal, c'est le système qui fait ça quand on dépasse,
il suffit de relâcher et ça redevient normal.



En fait, la solution qui rend l'affichage "propre" est la suivante:

===========
If Frame6.Left > 7000 Then Frame6.Enabled = False
If Frame6.Left < 80 Then Frame6.Enabled = False

If Button = 1 Then
Frame6.Left = (X * 1.4) + (Frame6.Left / 2)

End If

Frame6.Enabled = True

exit sub

==========


Sinon, pour le positionnement, c'est vrai qu'il faut ajouter le
différentiel entre la position du pointeur et le bord du contrôle. Mais
la question n'est pas là.
LE TROLL
Le #20262111
Bonjour,

Excellent, je n'avais pas pensé à ça, ben si ça marche, tant mieux, si
un jour j'en ai besoin je tenterai de m'en souvenir...

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"AT" news:4ac33365$0$1006$
Après mûre réflexion, LE TROLL a écrit :
Bonjour,

Ceci :

Sub frame6_MouseMove(Button As Integer, Shift As Integer, X As Single, Y
As Single)
If Button <> 1 Then Exit Sub
Frame6.Left = (X * 1.2) + (Frame6.Left / 2)
If Frame6.Left > 7380 Then Frame6.Left = 7380
If Frame6.Left < 80 Then Frame6.Left = 80
Frame6.Refresh
Form1.Refresh
End Sub

Je crois que c'est normal, c'est le système qui fait ça quand on
dépasse, il suffit de relâcher et ça redevient normal.



En fait, la solution qui rend l'affichage "propre" est la suivante:

=========== >
If Frame6.Left > 7000 Then Frame6.Enabled = False
If Frame6.Left < 80 Then Frame6.Enabled = False

If Button = 1 Then
Frame6.Left = (X * 1.4) + (Frame6.Left / 2)

End If

Frame6.Enabled = True

exit sub

========== >


Sinon, pour le positionnement, c'est vrai qu'il faut ajouter le
différentiel entre la position du pointeur et le bord du contrôle. Mais la
question n'est pas là.




Publicité
Poster une réponse
Anonyme