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 :

Modification de l'évènement OnClick [Trucs & Astuces]


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 16
    Points : 18
    Points
    18
    Par défaut [Resolu]Modification de l'évènement OnClick
    Pour les besoins de a création d'un composant, je cherches à modifier l'évènement OnClick. En fait je cherches, à partir du OnClick, créer deux nouveaux évènements selon que l'utilisateur cliques en haut ou en bas du composant (création des évènements OnClickHuat et OnClickBas). Est-ce possible ? Si oui quelle démarche utiliser ?
    Merci à l'avance.
    MrJéjé
    Directeur du recrutement de Gourous & riCo .

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Points : 99
    Points
    99
    Par défaut
    Je ne sais pas si c'est vraiment possible !!!

    Ne serait-il pas plus simple de creer 2 objets et de creer de onClick ???


    Je ne peux pas plus t'aider desoler
    Pour voir qu'il fait noir, on n'a pas besoin d'être une lumière.

    Il faut cueillir les cerises avec la queue. J'avais déjà du mal avec la main !

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    précise....

    sinon tu analyse la position de ta souris, objet Mouse, puis tu compare a une hauteur horizontale pour déterminer si c'est en haut ou en bas

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Points : 99
    Points
    99
    Par défaut
    bien vu farib j'y avait pas penser
    Pour voir qu'il fait noir, on n'a pas besoin d'être une lumière.

    Il faut cueillir les cerises avec la queue. J'avais déjà du mal avec la main !

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Précision : je voudrais que lorsque un utilisateur lambda utilise mon composant il dispose de 2 évènements OnClick (un pour la partie haute, l'autre pour la partie basse) au lieu du simple évènement OnClick.
    J'en profites pour poser une question (qui pourrais résoudre la première) : est-il possible de créer son propre évènement ?
    MrJéjé
    Directeur du recrutement de Gourous & riCo .

  6. #6
    LFE
    LFE est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 95
    Points : 2 463
    Points
    2 463
    Par défaut
    créer son propre evenement ... oui,.

    tu sais creer des messages sans problemes, et tu sais créer une fonction qui repond a ce mesage.

    par exemple

    dans la partie publique de ta classe, tu definis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	void virtual __fastcall FormUserRestoreApp(TMessage & Msg);
    	 BEGIN_MESSAGE_MAP
    	 MESSAGE_HANDLER(WM_USER_RESTORE, TMessage, FormUserRestoreApp)
    	 END_MESSAGE_MAP(TForm)
    et tu definis la fonction normalement.

    si j'ai bien compris ce que tu veux faire ...

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Merci tout de même LFE mais je ne pense pas que c'était ce que je cherchais. En fait j'ai réussit à créer un évènement avec TNotifyEvent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private:
    TNotifyEvent PMonEvenement;
    ...
    __published:
    __property TNotifyEvent OnMonEvenement  = {read=POnMonEvenement,         write=POnMonEvenement};
    Problème : je ne vois pas très bien comment intégrer le code pour spécifier ce qui va déclancher mon évènement (clic sur une zone de mon composant par exemple). Et encore merci à tous ceux qui me proposent des idées.
    MrJéjé
    Directeur du recrutement de Gourous & riCo .

  8. #8
    Yoh
    Yoh est déconnecté
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Tu as donc créé ton composant qui possède son évènement particulier.
    Dans le code de ta classe, si par exemple ton évènement se produit sur le OnClick (dans certaines conditions), tu surcharges la méthode :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DYNAMIC __fastcall TACLASSE::DoClick(void)
    {
       // rappelle la méthode DoClick() de ta classe de base si besoin
      ....
     
      if (/*besoin d'appeler mon évènement spécifique*/)
      {
          if (POnMonEvenement != NULL)
              POnMonEvenement();
      }
    }

    voilà, j'espère que j'ai été clair.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Très clair ! Cependant je n'arrive pas à rapeller la méthode DoClick(). Par ailleurs une petite correction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (OnMonEvenement != NULL) 
              OnMonEvenement(this);
    Enfin à quoi sert l'attribut DYNAMIC (le compilateur n'en veut pas) ?
    Merci toute fois de m'avoir débloquer.
    MrJéjé
    Directeur du recrutement de Gourous & riCo .

  10. #10
    Yoh
    Yoh est déconnecté
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (OnMonEvenement != NULL) 
              OnMonEvenement(this);
    J'écrivais POnMonEvenement car c'était le nom de ta variable membre de ta classe.

    Enfin à quoi sert l'attribut DYNAMIC (le compilateur n'en veut pas) ?
    Merci toute fois de m'avoir débloquer.

    DYNAMIC est synonyme de virtual mais c'est propre à Borland.

    Dans le .h :
    DYNAMIC void __fastcall DoClick(void);

    .cpp :
    void __fastcall DoClick(void);

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/07/2006, 13h15
  2. Pb Création évènement OnClick
    Par BigMike dans le forum C++Builder
    Réponses: 10
    Dernier message: 26/06/2006, 15h47
  3. événement onclick intempestif d'1 TMenuItem
    Par OutOfRange dans le forum Delphi
    Réponses: 6
    Dernier message: 22/06/2006, 20h46
  4. Changement dynamique de l'évènement OnClick
    Par cluis dans le forum Access
    Réponses: 3
    Dernier message: 22/03/2006, 11h30
  5. Erreur avec l'évènement OnClick de ListView
    Par xenos dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/03/2006, 14h54

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