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 :

OnClick d'un Bouton créée dynamiquement [FAQ]


Sujet :

C++Builder

  1. #1
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut OnClick d'un Bouton créée dynamiquement
    Bonjour,

    En ce moment je poste beaucoup lol. Je vous expose mon problème (si on peut appelé cela un problème).

    J'ai créer dynamiquement des panels (qui serviront de conteneurs). Chaque panel va contenir des boutons et chaque bouton auront une utilité différente.
    Voici un morceau de code :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    void __fastcall TFMatch_En_Cours::CreerPalette()
    {
    int i,Nbre_Nature_Coup,bas,Nb_Liste_Coup,id_nature,Nbr_Total_Coup,Coup;
       AnsiString Libelle_Nature_Coup;
       Coup=0;
       bas=FMatch_En_Cours->ClientHeight;
       TQuery *Nb_Nature_Coup = new TQuery(this);
       Nb_Nature_Coup->DatabaseName="Tennis";
       Nb_Nature_Coup->SQL->Clear();
       Nb_Nature_Coup->SQL->Add("Select count(idT_Nature_Coup) AS Nbre_Nature_Coup From t_nature_coup;");
       Nb_Nature_Coup->Active=true;
       Nbre_Nature_Coup=Nb_Nature_Coup->FieldByName("Nbre_Nature_Coup")->AsInteger;
       TQuery *Requete_Nb_Liste_Coup = new TQuery(this);
       Requete_Nb_Liste_Coup->DatabaseName="Tennis";
       TQuery *Libelle_Nature = new TQuery(this);
       Libelle_Nature->DatabaseName="Tennis";
       for (i=Nbre_Nature_Coup;i>=1;i--)
      {
         Libelle_Nature->SQL->Clear();
         Libelle_Nature->SQL->Add("Select idT_Nature_Coup,S_Libelle From t_nature_coup where idT_Nature_Coup="+AnsiString(i)+";");
         Libelle_Nature->Active=true;
         Libelle_Nature_Coup=Libelle_Nature->FieldByName("S_Libelle")->AsString;
         bas=bas-50;
         TPanel *Panel = new TPanel(this);
         Panel->Parent = this;
         Panel->Anchors <<akLeft <<akBottom;
         Panel->Left=100;
         Panel->Top=bas;
         Panel->Width=300;
         Panel->Height=25;
         Panel->Name = "P" + (AnsiString)i;
         Panel->Caption=Libelle_Nature_Coup;
         id_nature=Libelle_Nature->FieldByName("idT_Nature_Coup")->AsInteger;
         Requete_Nb_Liste_Coup->SQL->Clear();
         Requete_Nb_Liste_Coup->SQL->Add("Select Count(T_Nature_Coup_idT_Nature_Coup) AS Nb_Liste_Coup From t_listecoups where  T_Nature_Coup_idT_Nature_Coup="+(AnsiString)id_nature+";");
         Requete_Nb_Liste_Coup->Active=true;
         Nb_Liste_Coup=Requete_Nb_Liste_Coup->FieldByName("Nb_Liste_Coup")->AsInteger;
         TQuery *Requete_Nbr_Total_Coup = new TQuery(this);
         Requete_Nbr_Total_Coup->DatabaseName="Tennis";
         Requete_Nbr_Total_Coup->SQL->Clear();
         Requete_Nbr_Total_Coup->SQL->Add("Select count(idT_ListeCoups) AS Nbr_Total_Coup From t_listecoups;");
         Requete_Nbr_Total_Coup->Active=true;
         Nbr_Total_Coup=Requete_Nbr_Total_Coup->FieldByName("Nbr_Total_Coup")->AsInteger;
         do
         {
           Coup++;
           Requete_Nb_Liste_Coup->SQL->Clear();
           Requete_Nb_Liste_Coup->SQL->Add("Select (S_Symbole) From t_listecoups Where T_Nature_Coup_idT_Nature_Coup="+(AnsiString)id_nature+";");
           Requete_Nb_Liste_Coup->Active=true;
     
         for (int j=1;j<= Nb_Liste_Coup;j++)
         {
           TButton *Bouton = new TButton(Panel);
           Bouton->Parent = Panel;
           Bouton->Width = 40;
           Bouton->Height = 25;
           Bouton->Left = 0+((40 + 10)*j);
           Bouton->Top=0;
           Bouton->Name="Bouton"+(AnsiString)j;
           Bouton->Caption = Requete_Nb_Liste_Coup->FieldByName("S_Symbole")->AsString;
           Bouton->OnClick = MesBoutonsCodeClick;
           Requete_Nb_Liste_Coup->Next();
         }
         }while (Coup==Nbr_Total_Coup);
      }
    }
    Voici aussi le code de la fonction MesBoutonsCodeClick
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TFMatch_En_Cours::MesBoutonsCodeClick(TObject *Sender)
    {
     ShowMessage ("ok");
    }
    et déclaré dans le .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class TFMatch_En_Cours : public TForm
    {
    __published:	// Composants gérés par l'EDI
           ......
           ......
           ......
            void __fastcall MesBoutonsCodeClick(TObject *Sender);
            void __fastcall FormCreate(TObject *Sender);
    private:	// Déclarations utilisateur
        void __fastcall CreerPalette();
    public:		// Déclarations utilisateur
            __fastcall TFMatch_En_Cours(TComponent* Owner);
    };
    Ce que je souhaite faire dans un premier temps avec la fonction MesBoutonsCodeClick, c'est de pouvoir récupérer le Name du bouton sur lequel j'ai cliqué.

    Cantrelle m'a donné une méthode pour savoir les composants créer sur la fiche (merci au passage ) ... ce code est le suivant (code pour des panels) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TFMatch_En_Cours::Button2Click(TObject *Sender)
    {
    TPanel *Panel = dynamic_cast < TPanel* > (this->FindComponent("Name_Du_Composant"));
    Panel->Caption = "Essai réussi";
    }
    Voilà, merci d'avoir lu jusque ici lol. J'essaie de faire assez clair ... !
    Merci de votre aide!

  2. #2
    Membre actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void __fastcall MesBoutonsCodeClick(TObject *Sender);
    Tu recupere l'identifiant de ton bouton avec TObject *Sender.

    Tu trouvera un peu plus d'info dans la FAQ au chapitre sur la création de composant dynamique

    lanonyme

  3. #3
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    C'est ....par ici
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Je vais voir cela de suite! J'avais pas vu ce nouveau topic

    Je vous tiens au courant !

  5. #5
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    Tu as tout décris ici aussi

  6. #6
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Merci tout le monde!

    Mon problème est résolu, fallait vraiment pas grand chose! Il me reste juste à tout refaire car j'avais des petits soucis concernant les composants utilisés! Dès que j'ai fini et si je n'oublie pas, je posterai mon code pour que d'autres puissent s'en inspirer!

    Merci

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

Discussions similaires

  1. AddHandler et Bouton crée dynamiquement
    Par Dos dans le forum VB.NET
    Réponses: 8
    Dernier message: 11/04/2011, 09h34
  2. Réponses: 8
    Dernier message: 30/08/2010, 16h02
  3. évènements sur plusieurs boutons crées dynamiquement
    Par Mangacker dans le forum C++Builder
    Réponses: 40
    Dernier message: 01/05/2008, 18h57
  4. Action sur des boutons crées dynamiquement
    Par barthelus76 dans le forum SWT/JFace
    Réponses: 13
    Dernier message: 28/06/2007, 20h32
  5. OnClick sur un bouton créé dynamiquement
    Par Jeankiki dans le forum Delphi
    Réponses: 4
    Dernier message: 05/11/2006, 18h44

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