Déplacement d'un contrôle Frame [Résolu]

Messages postés
252
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
29 juin 2013
- - Dernière réponse : jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
- 1 nov. 2008 à 22:32
Bonjour,
J'essaye de déplacer à la souris un Frame posé sur un PictureBox.
Après avoir fixé la propriété DragMode du contrôle à Automatic, je tente d'intercepter sa position avec le code suivant:
Private Sub FrameAjout_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 1 Then FrameAjout.Move FrameAjout.Left + X, FrameAjout.Top + Y
  If FrameAjout.Left < 0 Then FrameAjout.Left = 0
  If FrameAjout.Top < 0 Then FrameAjout.Top = 0
  If FrameAjout.Left > Affi.ScaleWidth - FrameAjout.width Then FrameAjout.Left = Affi.ScaleWidth - FrameAjout.width 
  If FrameAjout.Top > Affi.ScaleHeight - FrameAjout.height Then FrameAjout.Top = Affi.ScaleHeight - FrameAjout.height
End Sub
Tant que le bouton gauche de la souris reste enfoncé, l'enveloppe du Frame se déplace correctement mais dès que je le relâche, le Frame vient se placer n'importe où, voire disparaît!
Quelqu'un voit-il la solution?
Merci
Jacques13
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
3
Merci
Bonjour,

et comme ceci, en laissant dans son coin la propréité  Dragmode; dont nous n'avons pas besoin (donc = 0)?

Option Explicit
Dim MovTop, MovLft As Integer
Dim DbTop, DbLft As Integer


Private Sub FrameAjout_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 1 Then   DbTop ScaleY(Y, 1, 3): DbLft ScaleX(X, 1, 3)
  End If
End Sub
Private Sub FrameAjout_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 1 Then
    MovLft = Int((FrameAjout.Left + ScaleX(X, 1, 3)) - DbLft)
    MovTop = Int((FrameAjout.Top + ScaleY(Y, 1, 3)) - DbTop)
    FrameAjout.Move MovLft, MovTop
  End If
End Sub

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jmfmarques
Messages postés
252
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
29 juin 2013
0
Merci
Bonsoir JMFMarques,
Merci pour ta réponse.
Malheureusement, cela ne fonctionne toujours pas: déplacements erratiques!
Commenter la réponse de cs_jacques13
Messages postés
252
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
29 juin 2013
0
Merci
Non Non!
Toutes mes excuses, JMFMarques, en mettant le DragMode à 0, ça marche!
Une fois de plus tu m'as sauvé la mise. Encore merci.
Jacques13
Commenter la réponse de cs_jacques13
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
Tiens....
Chez moi (je viens de l'essayer) ===>>> cela fonctionne toujours ...
Alors ? ===>> je dois avoir un VB meilleur que le tien, donc ...


Tu es bien certain d'avoir laissé aux autre propriété de Drag leurs valeurs par défaut, toi ?
Commenter la réponse de jmfmarques