IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Afficher les coordonnées d'un usercontrol lors de son déplacement


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut Afficher les coordonnées d'un usercontrol lors de son déplacement
    Salut,

    Pour faire suite au topic http://www.developpez.net/forums/sho...d.php?t=408874, sur les coordonnées d'un usercontrol, je souhaite maintenant que les coordonnées X & Y de celui-ci s'affiche sur ma form.

    Comment procéder ?

    Merci par avance

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Quand j'ai ce genre d'infos à indiquer sur une Form, j'utilise un composant StatusBar (Microsoft Windows Common Controls 6.0) et j'affiche les informations dans différents Pannels qu'on peut y ajouter.

    Pour avoir de l'aide sur ce composants, tu l'ajoute à ton projet, tu affiche l'explorateur d'objets (F2) et tu consulte la liste des propriétés, méthodes et événements qui sont à ta disposition. À partir de l'explorateur d'objets, tu as toujours accès à l'aide (F1).

  3. #3
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut esoso et zazaraignée

    Dans la declaration general de ton UserControl, ajouter l'evenement comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Event CeDeplace(Left As Integer, Top As Integer)
    toujours dans l'UserControl, procedure UserControl_MouseMove
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Shift = vbCtrlMask And Button = 1 Then ' Ctrl et bouton gauche de la souris
     'deplacement
     'X et Y sont toujours en twips, quelque soit le ScaleMode du container
     NewMeCoord.Left = (NewMeCoord.Left + ScaleX(X, vbTwips, vbPixels)) - StartX
     NewMeCoord.Top = (NewMeCoord.Top + ScaleY(Y, vbTwips, vbPixels)) - StartY
     'met a jour le UserControl
     MoveWindow UserControl.hwnd, _
                NewMeCoord.Left, NewMeCoord.Top, _
                NewMeCoord.Width, NewMeCoord.Height, 1
     RaiseEvent CeDeplace(CInt(NewMeCoord.Left), CInt(NewMeCoord.Top))
    End If
    End Sub
    Sur ton Form, pour l'exemple affichage dans un Label
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserControl11_CeDeplace(Left As Integer, Top As Integer)
    Label2 = "left =" & CStr(Left) & " Top =" & CStr(Top)
    End Sub
    Il ya peut être plus simple, mais moi je ne c'est faire que comme sa
    A+

    Motif de l'edit
    En fait il faut que tu ajoutes RaiseEvent CeDeplace(CInt(NewMeCoord.Left), CInt(NewMeCoord.Top)), partout ou tu utilises
    .............
    'met a jour le UserControl
    MoveWindow UserControl.hwnd
    .......
    A mettre donc dans les procedures UserControl_KeyDown, UserControl_MouseMove et UserControl_MouseUp
    Re A+

  4. #4
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    ProgElecT: Je ne sais pas si esoso a programmé un événement MouseMove. Je crois qu'il déplace ses composant sur un événement clavier. Il n'a alors qu'à ajouter les deux lignes de code nécessaires pour afficher les coordonnées du contrôle dans la barre d'état ou ailleurs... c'est selon.

  5. #5
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Merci pour vos réponses.

    Si zazaraignée, il y a eu des modifications depuis et le déplacement se fait aussi à la souris..., donc en utilisant MouseMove.

    ProgElecT, je teste ce soir ton code.

  6. #6
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Bon alors, les coordonnées des contrôles sont en Twips et de type Single. Il se peut que Integer ne soit pas assez grand et provoque des erreurs.

  7. #7
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Ok, merci pour ces précisions.

  8. #8
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut
    petites corrections

    La declaration de l'evenement dans le code de l'user
    Long a la place de Integer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Event CeDeplace(Left As Long, Top As Long)
    pour le declenchement dans les 3 procedures signalées, code de l'user
    qui remplace, RaiseEvent CeDeplace(NewMeCoord.Left, NewMeCoord.Top)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     RaiseEvent CeDeplace(ScaleX(NewMeCoord.Left, 3, ContenerScaleMode), _
                          ScaleY(NewMeCoord.Top, 3, ContenerScaleMode))
    et sa devient dans le Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserControl12_CeDeplace(Left As Long, Top As Long)
    Label2 = "left =" & CStr(Left) & " Top =" & CStr(Top)
    End Sub
    Apres essais, ou que soit posé l'user, quel que soit le ScalMode du conteneur, les coordonnées seront maintenant renvoyées dans l'unité du ScalMode du conteneur.
    A+

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour à tous,
    Bonsoir ProgElect,
    Je crois qu'il manque un événement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dans le module de UF
    Dim StartX as single
    Dim StartY as single
    Private Sub UserControl_MouseDown(Button As Integer, Shift As Integer, X As Single, Y as single)
        StartX = X
        StartY = Y
    End Sub
    Mais dans le contexte expliqué, je crois que le plus simple c'est de mettre dans les événements qui gère le déplacement du UF, que ce soit par Key, ou mouseMove...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonLabel1.caption = NomUserForm.Top
    TonLabel2.caption = NomUserForm.Left
    A+
    EDIT:
    Une précision est indispensable..
    Où se trouve la gestion des événement Key et Mouse ?

  10. #10
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut LeForestier
    Il faudra que je mette le source du UserControl un jour, car les bribes de code posées au fur et a mesure, ne permettent pas de comprendre.
    Je te promet que sa fonctionne correctement.
    Si esoso le permet, je ferai un Zip du source de l'user, que je mettrai a disposition, en attendant, voir eventuellement le lien donné par esoso, lors de son premier message, sa done des indications.

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonsoir,
    Bonsoir ProgElect,
    Je veux bien te croire, mais alors que vient faire StarY et StartX qui ne sont initialisé nulle part dans ton code. Peut être qu'il sont inutile ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'X et Y sont toujours en twips, quelque soit le ScaleMode du container
     NewMeCoord.Left = (NewMeCoord.Left + ScaleX(X, vbTwips, vbPixels)) - StartX
     NewMeCoord.Top = (NewMeCoord.Top + ScaleY(Y, vbTwips, vbPixels)) - StartY
    A+

  12. #12
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Salut à tous et merci d'avoir répondu,

    Désolé pour le retard de la réponse.

    Je confirme ProgElecT pour dire que ce contrôle fonctionne impécable. ProgElecT, inutile d'avoir ma confirmation pour mettre le zip ... bien sûr.

    Merci en tout cas pour les solutions apportées.

  13. #13
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut
    Citation Envoyé par esoso
    ProgElecT, inutile d'avoir ma confirmation pour mettre le zip ... bien sûr.
    Donc je le met, chacun pourra se faire une idée du pourquoi des différentes interventions.
    Pour moi se n'etait qu'un outil d'apprentissage, si il a été utile a esoso, tant mieux.

    Motif de l'edit
    Pour faire un peu de place sur DVP, nettoyage, je suprime le ZIP, si cela interesse un jour quelqu'un, il pourra toujours me le demandé.

  14. #14
    Membre habitué

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Points : 145
    Points
    145
    Par défaut
    Ce qui a été le cas .

Discussions similaires

  1. Afficher les coordonnées d'un code postal sur une carte
    Par FredericB dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/12/2007, 16h54
  2. recuperer les coordonnées de la souris lors d'un appui sur une touche
    Par haraelendil dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 22/11/2007, 13h23
  3. Retourner les coordonnées d'un usercontrol
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 09/10/2007, 14h08
  4. Déterminer les coordonnées d'un usercontrol
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 12/09/2007, 17h41
  5. Afficher les coordonnées d'un layer dans des champs texte
    Par renaud26 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 15/08/2006, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo