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)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LE TROLL
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...
"AT" a écrit dans le message de 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!
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...
"AT" <at@t.fr> a écrit dans le message de
news:4ac30d13$0$904$ba4acef3@news.orange.fr...
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)
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...
"AT" a écrit dans le message de 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
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à.
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à.
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
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...
"AT" a écrit dans le message de 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à.
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...
"AT" <at@t.fr> a écrit dans le message de
news:4ac33365$0$1006$ba4acef3@news.orange.fr...
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à.
"AT" a écrit dans le message de 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à.