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 :

Utilisation du paramètre *Sender


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Utilisation du paramètre *Sender
    Bonjour à tous et à toutes

    Pour les besoins de mon application, je dois créer dynamiquement 16 TEdit et leurs affecter un évènement OnChange identique aux 16. En m'inspirant de l'article de la Faq de CGI, j'ai pu écrire ceci:

    Fichier Unit1.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private: 
            TEdit *EditHex[16];
            void __fastcall EditHexOnChange(TObject *Sender);
    Puis dans mon fichier Unit1.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void __fastcall TForm1::FormCreate(TObject *Sender)
      {
      for (int i = 0; i < 16; i++)
        {
        EditHex[i] = new TEdit(this);
        EditHex[i]->Parent = Form1;
        EditHex[i]->OnChange = EditHexOnChange;
        }
      }
    Mais dans l'évènement, je ne sais pas comment faire référence à l'objet qui a déclenché celui-ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::EditHexOnChange(TObject *Sender)
    {
        EditASC->Text = ?????
    }
    Je pensais que j'allais pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EditASC->Text = Sender->Text;
    Mais ça ne marche pas. Si quelqu'un à une idée ?

    Grand merci
    Olivier

  2. #2
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Essayes en castant ton Sender en TEdit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EditASC->Text = ((TEdit*)Sender)->Text;
    + + +

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Merci bakaneko et quelle rapidité !

    Je ne sais pas le tester maintenant mais je le testerai dès ce soir et je vous tiendrai au courant. Sans oublier le "[Résolu]" si ça marche.

    Encore merci
    Olivier

  4. #4
    Rédacteur
    Avatar de dvsoft
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2002
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2002
    Messages : 176
    Points : 622
    Points
    622
    Par défaut
    bonsoir

    pour plus de securite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       TEdit* pEdit = dynamic_cast<TEdit*>(Sender);
        if (pEdit)
           EditASC->Text = pEdit->Text;
        else
           ....
    Bon courage
    Alain

  5. #5
    Membre habitué

    Profil pro
    Cadre
    Inscrit en
    Mars 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Points : 168
    Points
    168
    Par défaut
    Que signifie le dynamic_cast, je n'avais jamais vu cette syntaxe (d'habitude, j'applique la solution de baka_neko ) ?
    Du bon sens tu auras
    Du bon sens tu auras encore
    Du bon sens tu auras toujours
    http://emilien.bresson.free.fr

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Bonjour à tous

    J'ai essayé le cast de Bakaneko mais ça ne marche pas (dans mon cas !) et pourtant j'avais bien vu d'autres codes avec ce cast sur *Sender. Lorsque j'utilise cette solution, je n'ai accès qu'aux propriétés et méthodes de TObject et non à celles de TEdit.

    Par contre, j'ai également trouvé la syntaxe du dynamic_cast que dvsoft énonce et ça fonctionne. Je devais coder:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void __fastcall TForm1::EditHexOnChange(TObject *Sender)
      {
      TEdit *EditHEX = dynamic_cast<TEdit *>(Sender);
     
      EditASC->Text = EditHex->Text;
      }
    C'est vrai que je peux faire un test sur EditHEX pour plus de sécurité mais je n'y avais pas pensé.

    Par contre, je ne comprend pas la différence entre un cast "classique" et un cast dynamique (dynamic_cast) ?

    En tout cas, un grand merci à vous deux pour votre aide et je vous souhaite à tous, avec un peu d'avance, un JOYEUX NOEL.
    Olivier

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/03/2007, 11h08
  2. Utilisation des paramètres avec rowsource - 97 et 2003
    Par IntenseM3 dans le forum Access
    Réponses: 1
    Dernier message: 10/05/2006, 09h18
  3. Réponses: 2
    Dernier message: 21/09/2005, 17h23
  4. problème d'utilisation de paramètre
    Par pelelive dans le forum Access
    Réponses: 2
    Dernier message: 22/06/2005, 14h55
  5. [XSLT] Utilisation de paramètre
    Par stailer dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 10/05/2004, 14h49

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