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 :

Comment déclencher la fonction MouseUp()?


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Par défaut Comment déclencher la fonction MouseUp()?
    Bonjour,
    voici j'ai rencontré un petit problème: j'ai mis dans la fonction MouseUp() de Memo1 pour afficher une chaine de caractères, tout se passe bien si je fait d'abord "MouseDown" sur Memo1.
    Cependant, quand je clique (MouseDown) sur Memo2, je déplace le curseur et je relache le bouton de souris sur Memo1: la fonction MouseUp de Memo1 n'a pas été déclenchée!
    Je voudrais que MouseUp() se déclenche chaque fois qu'on lache le bouton sur la zone de Memo1.
    Merci par avance

  2. #2
    Membre chevronné Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 60

    Informations forums :
    Inscription : Novembre 2004
    Messages : 669
    Par défaut
    Bonjour
    Essay de copier/collé le code de l'evenement MouseDown & MouseUp du Memo1 et Memo2,
    pour que l'ont puissent vous aidé, Car je n'est rien compris.
    A++

  3. #3
    Membre éclairé
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Par défaut
    Il n'y a pas de code (juste int i=10; pour marquer un point d'attêt). Le problème est que la fonction MouseUp() ne se déclenche pas si on n'a pas cliqué sur memo1 (biensur, MouseDown() marche).

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Hello

    Le problème, c'est que quand tu cliques dans Memo2 (MouseDown) , tous les messages de souris qui vont suivre (MouseMove, MouseUp) seront envoyés directement à Memo2... Memo1 ne verra rien tant que tu n'auras pas relaché la souris...
    La solution, c'est peut-être de passer par l'événement OnDragDrop (en jouant sur les propriétés DragCursor/DragMode des mémos) ou alors de faire un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void __fastcall TForm1::Memo2MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
      {
      TPoint pos = Memo2->ClientToParent( TPoint(X,Y) );
      if (ControlAtPos(pos, true, true) == Memo1)
        {
        TPoint pos_parent = Memo1->ParentToClient(pos);
        Memo1MouseUp(Sender, Button, Shift, pos_parent.x, pos_parent.y);
        }
      }
    A++

  5. #5
    Membre éclairé
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Par défaut
    Merci totoche76, cela marche. Juste actualiser un peu les coordonnées entre les deux memos.

    Est-ce que quelqu'un peut me donner un peu plus de lumière sur l'utilisation DragCursor/DragMode?

    Je voudrais réaliser une fonction comme suit:
    Déplacer une des images se situant dans un GroupBox vers un autre GroupBox tout en respectant la position de souris.
    Merci beaucoup

  6. #6
    Membre éclairé
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Par défaut
    Merci totoche76, cela marche. Juste actualiser un peu les coordonnées entre les deux memos.

    Est-ce que quelqu'un peut me donner un peu plus de lumière sur l'utilisation DragCursor/DragMode?

    Je voudrais réaliser une fonction comme suit:
    Déplacer une des images se situant dans un GroupBox vers un autre GroupBox tout en respectant la position de souris.
    Merci beaucoup

  7. #7
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Re,

    Mets des TImage dans un GroupBox, propriété DragMode = Automatic
    Sur un 2ème GroupBox, code les événements OnDragDrop et OnDragOver, ainsi que le OnStartDrag des images (mem_x et mem_y variables de la fenêtre):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void __fastcall TForm1::GroupBox2DragDrop(TObject *Sender, TObject *Source, int X, int Y)
      {
      if (Source->InheritsFrom(__classid(TControl)))
        {
        TControl* ctrl = dynamic_cast<TControl*>(Source);
        ctrl->Parent = GroupBox2;
        ctrl->Left = X - mem_x; //ctrl->Width/2;
        ctrl->Top = Y - mem_y; //ctrl->Height/2;
        }
      }
     
    void __fastcall TForm1::GroupBox2DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept)
      {
      Accept = true;
      }
     
    void __fastcall TForm1::Image1StartDrag(TObject *Sender, TDragObject *&DragObject)
      {
      mem_x = Image1->ScreenToClient( Mouse->CursorPos).x;
      mem_y = Image1->ScreenToClient( Mouse->CursorPos).y;
      }
    A++

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

Discussions similaires

  1. [Bouton] Comment déplacer un bouton en fonction du scrolling
    Par Kylen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/08/2005, 12h25
  2. Comment redimensionner un TEdit en fonction de son contenu ?
    Par Tempotpo dans le forum Composants VCL
    Réponses: 10
    Dernier message: 25/07/2005, 21h52
  3. [VB.NET] Comment faire un appel de fonction ?
    Par Webman dans le forum ASP.NET
    Réponses: 4
    Dernier message: 18/05/2004, 10h06
  4. Réponses: 2
    Dernier message: 12/02/2004, 13h07
  5. Comment faire un Timer de fonction PORTABLE ?
    Par dieuP1guin dans le forum C
    Réponses: 3
    Dernier message: 04/07/2003, 10h44

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