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 :

�v�nements personnalis�es avec param�tres


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 30
    Par d�faut �v�nements personnalis�es avec param�tres
    Bonjour j'aimerais r�ussir a cr�er mes �v�nements personnalis�s.
    Tout ce que j'ai trouve de clair est en rapport avec TNotifyEvent mais qui n'a
    aucun param�tre.J'aimerais pouvoir faire comme avec TNotifyEvent mais en pouvant passer plusieurs param�tres
    �tant habituer avec c# et les fameux public event et delegate en c++ je suis �gar�..En passant j'utilise c++ builder6
    Merci d'avance .

  2. #2
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Un TNotifyEvent est d�clar� sous cette forme :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    typedef void __fastcall (__closure *TNotifyEvent)(System::TObject* Sender);
    Tu peux personnaliser comme bon te semble :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    typedef type __fastcall (__closure *TBlabla)(paramètres);
    La d�claration dans la classe :

    soit comme donn�e membre :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    public :
    TBlabla OnBlabla;
    soit sous forme de propri�t� :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    private :
    TBlabla FOnBlabla;
     
    public :
    __property TBlabla OnBlabla={read=FOnBlabla, write=SetOnBlabla};
    Le Setter peut permettre d'�viter de passer NULL comme param�tre !

    Cel� suppose donc une m�thode :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    type __fastcall MyOnBlabla(paramètres);
    Et une initialisation (�ventuellement dans le constructeur pour �viter un NULL):

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    OnBlabla = MyOnBlabla;
    Comme il s'agit d'un pointeur (vers m�thode), il faut veiller dans certains cas � ce qu'il ne soit jamais NULL !
    Ce ne serait pas le cas si cette m�thode �tait utilis�e indirectement via une DYNAMIC.
    Par exemple, OnClick peut �tre NULL puisque sollicit�e par Click (DYNAMIC) de la mani�re suivante :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    if(FOnCLick != NULL) FOnClick(this);
    C'est � partir de ce niveau l�, et c'est juste un avis personnel, que le d�veloppement commence � devenir excessivement interessant !

    A plus !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 30
    Par d�faut
    Merci de ta r�ponse mais voila que j'ai un eptit probl�me car je suis pas sur de tout avoir plac� a la bonne place...Voila ou j en suis:
    Fichier .h
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    typedef void __fastcall (__closure *TJoueurEvent)(int score,AnsiString pname);
    class Joueur
    {
    private:
    TJoueurEvent FOnWinEvent;....
    protected:
    void __fastcall SetWinEvent(int score,AnsiString pname);
    void __fastcall RaiseWinEvent(int score,AnsiString pname);
    __published:
    __property TJoueurEvent OnWinEvent = {read=FOnWinEvent, write=SetWinEvent};
    dans le fichier .cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void __fastcall Joueur::RaiseWinEvent(int score,AnsiString pname)
    {
    if(FOnWinEvent!= NULL)
    {
    FOnWinEvent(score,pname);
    }
    }
    ici RaiseWinEvent est la procedure appel� par la classe pour raiser l �v�nements.. Je ne sais pas quoi impl�menter du cot� de SetWinEvent.

    N�anmoins je suis proche de la bonne voix cependant lorsque j'associe l'�v�nement void __fastcall (__closure *TJoueurEvent)(int score,AnsiString pname) a une proc�dure dans ma form principale j'obtient le message unresolved external __fastcall (__closure *TJoueurEvent)(int score,AnsiString pname)referenced from .........

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 30
    Par d�faut
    Bon j'ai trouv� la solution j'�tais vraiment proche
    Encore merci � henderson pour ton aide
    Voici pour ceux que ca peut aider
    dans fichier .h
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    typedef void __fastcall (__closure *TJoueurEvent)(int score,AnsiString pname);
    class Joueur
    {
    private:
    TJoueurEvent FOnWinEvent;
    protected:
    void __fastcall WinEvent(int score,AnsiString pname);
    public:
    __property TJoueurEvent OnWinEvent = {read=FOnWinEvent, write=FOnWinEvent};
    fichier .cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void __fastcall Joueur::WinEvent(int score,AnsiString pname)
    {
    if(FOnWinEvent!= NULL)
    {
    FOnWinEvent(score,pname);
    }
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 7
    Dernier message: 11/03/2013, 22h34
  2. �v�nement "post_it" avec param�tres
    Par Issam dans le forum SQL
    R�ponses: 0
    Dernier message: 04/02/2010, 08h13
  3. requ�te SQL avec param�tre en vb avec base de donn�e SQL srv
    Par dialydany dans le forum VB 6 et ant�rieur
    R�ponses: 5
    Dernier message: 01/02/2005, 10h33
  4. [PL/SQL] Curseur avec Param�tre
    Par blids dans le forum Oracle
    R�ponses: 5
    Dernier message: 10/10/2004, 20h07
  5. R�ponses: 3
    Dernier message: 21/05/2003, 11h44

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