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

C++Builder Discussion :

Déplacement d'un TShape


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 21
    Par défaut Déplacement d'un TShape
    Bonjour,
    J'ai créer un TShape à l'intérieur d'une forme et j'aimerais le faire glisser sur la forme. J'ai utiliser la fonction OnMouseMove sur mon objet TShape. Mais mon TShape ne bouge pas aussi vite que la souris. Il me faut un déplacement de 200pixels pour faire bouger mon TShape de 100 pixels par exemple.
    Si quelqu'un a une idée merci bcp

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut
    Ah tiens un sujet que je connais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Left = Left + X - _Xm;
    Top = Top + Y - _Ym;
    Avec Left et Top attributs de la Shape, _Xm et _Ym la position relative de la souris dans la Shape, et X et Y les coordonnées passées par l'évènement

    PS: faut stocker _Xm et _Ym quand tu clicke down sur la shape

    Bonne chance

  3. #3
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 21
    Par défaut
    Ca ne marche pas bien, quand je bouge ma TShape, elle suit ma souris mais elle essaye de revenir au milieu à chaque fois

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut
    Elle essaye de revenir au millieu de quoi ?

    Ce que je fais c'est que dans le OnMouseMove, j'utilise un booléen.
    S'il est à faux (1er click avant le déplacement), je mets les _Xm et _Ym aux valeurs de X et Y, et je passe le booléen à true
    S'il est à true j'utilise le code d'avant

  5. #5
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 21
    Par défaut
    En fait, si il retourner au milieu de ma TForm c'etait une erreur de programmation. Par contre j'ai toujours un probleme car ma Tshape ne suit pas assez rapidement le curseur. c bizarre je sais pas pkoi?

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Déclarer ces variables en global :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bool Move_Flag = false;
    int Move_x;
    int Move_y;
    On utilise les événements liés à la souris de l'objet en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void __fastcall TForm1::Shape1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    Move_Flag = true;
    Move_x = X;
    Move_y = Y;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm1::Shape1MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
    if(Move_Flag)
        {
        Shape1->SetBounds(Shape1->Left + X - Move_x,
                          Shape1->Top + Y - Move_y,
                          Shape1->Width,
                          Shape1->Height);
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm1::Shape1MouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
    Move_Flag = false;
    }

    A plus !

  7. #7
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 21
    Par défaut
    merci bcp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déplacement ou positionnement d'une fenêtre
    Par agl dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/11/2003, 09h29
  2. Déplacement d'Objets
    Par NaDiA_SoFt dans le forum C++Builder
    Réponses: 6
    Dernier message: 20/09/2003, 14h28
  3. Déplacement "automatique" du curseur
    Par Amenofis dans le forum Composants VCL
    Réponses: 2
    Dernier message: 08/01/2003, 18h57
  4. Limiter le déplacement de la souris
    Par el_bouleto dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/11/2002, 23h56
  5. Redimensioner un TShape
    Par agh dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/09/2002, 20h33

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