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 :

appel d'un objet a partir d'un AnsiString


Sujet :

C++Builder

  1. #1
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut appel d'un objet a partir d'un AnsiString
    Bonjour,

    voila, j'ai fait une form avec 64 CheckBox (pour les besoin de facilité de débeuggage)

    ils se nomment de A1......A8,B1......B8,C1......C8, etc......
    je voudrais savoir si je fait un AnsiString contenant A1 (par exemple)
    y a une fonction pour la convertir en nom d'objet ?

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    AnsiString var = "A1";
    {....}
    var->Checked = false;
    (ou bien var.Checked = false)
    Merci de votre information
    car me taper 64 tests ca va vite me saouler...

  2. #2
    Membre éprouvé

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

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Mars 2006
    Messages : 132
    Par défaut
    Jette un oeil sur cette propriété

    Tu peux parcourir chaque composants de ta fenetre, vérifier son nom, et agir le cas échéant

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

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Je peux te proposer la solution suivante (peut-être pas la meilleure...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    AnsiString Var = "A1";//nom du controle que tu veux tester
    for (int i = 0;i < ControlCount;i++)//parcours des controles de ta fiche
    {
     if (Controls[i]->ClassNameIs(Var))//je vérifie si le controle trouvé est celui que je désire
     {
      //tes tests
     }
    }
    Voilà...

  4. #4
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Citation Envoyé par bakaneko
    Je peux te proposer la solution suivante (peut-être pas la meilleure...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    AnsiString Var = "A1";//nom du controle que tu veux tester
    for (int i = 0;i < ControlCount;i++)//parcours des controles de ta fiche
    {
     if (Controls[i]->ClassNameIs(Var))//je vérifie si le controle trouvé est celui que je désire
     {
      //tes tests
     }
    }
    Voilà...
    merci,

    concernant les actions apres un test positif,

    je voudrais par exemple, mettre checked à true.
    mais le probleme, c'est que
    quand j'ai trouvé le controle que je veux,
    je fais :

    Controle[i]->Checked = false;

    mais ca ne marche pas, meme avec un cast ( (TCheckBox) )

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

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Mea Culpa...

    J'ai fait une légère erreur dans mon code. ClassNameIs permet de tester le type de l'objet, pas son nom.

    Le code suivant fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    AnsiString Var = "A1";//nom du controle que tu veux tester
     for (int i = 0;i < ControlCount;i++)//parcours des controles de ta fiche
     {
      if (Controls[i]->Name == Var)//je vérifie si le controle trouvé est celui que je désire
      {
       ((TCheckBox *)Controls[i])->Checked = true;
      }
     }

  6. #6
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Merci pour votre aide a tous les deux.
    c'est plus rapide maintenant de cocher plein de cases de cette facon ^^.


    Ciao

  7. #7
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    A condition que les composants aient le même parent.

  8. #8
    Nouveau candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Par défaut
    bonjour,
    j'ai sensiblement le meme probleme mais moi c'est avec des form.
    en fait je voudrais ouvir une form (en appuyant sur un bouton) en fonction de ce qui est sélectionné dans un CombBox.
    Par exemple si Choix1 est selectionné cela ouvre Choix1_frm
    si Choix2 est selectionné cela ouvre Choix2_frm
    etc...
    j'arrive bien a le faire mais je voudrais le faire sans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(ComboBox1->Text == "Choix1")
    {
    Choix1_frm->Show();
    }
    if(ComboBox1->Text == "Choix2")
    {
    Choix2_frm->Show();
    }
    Ce code etant assez lourd pour plusieurs choix dans ComboBox.
    Auriez vous une solution? j'ai essayé avec la methode donnée mais ca ne marche pas.
    merci d'avance
    anthony

  9. #9
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    C'est parce que tu ne prend pas les composant au bon niveau, les checkBox été sur la form, or tes form ne sont pas enfant de la form, il faut que tu remplace ControlCount par Application->ComponentCount et Controls[i] par Application->Components[i]

  10. #10
    Nouveau candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Par défaut
    Merci beaucoup pour ta réponse pottiez !!
    Ca marche nickel !! j'ai testé vite fait ca sur un nouveau projet !! Maintenant faut que j'intègre ca !!
    mais merci, ca va me simplifier le travail !!

    Anthony

  11. #11
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    La propriété Items (TStrings) de TComboBox sait gérer deux listes : Strings et Objects.
    Donc si on associe à chaque chaîne de Strings un TObject dans Objects on obient un sélecteur d'objets...
    Dans une méthode, en supposant que Objects soit parfaitement remplie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int n = ComboBox1->ItemIndex;
    if(n >= 0)
        {
        TObject *Object = ComboBox1->Items->Objects[n];
        if(Object != NULL) ((TForm*)Object)->Show();
        }
    Voir l'aide pour TComboBox::Items !

    Ca reste reste vrai également pour un TListBox.

    A plus !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/10/2013, 12h40
  2. Appel d'un objet remoting à partir d'un web service
    Par Bal1n dans le forum Services Web
    Réponses: 2
    Dernier message: 02/08/2010, 16h54
  3. Appeler une methode d'un Objet C# à partir du Xaml suite à un click
    Par Aquatiques dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 14/06/2008, 14h37
  4. Pb d'appel d'objet a partir d'un autre objet
    Par sebastien2222 dans le forum Langage
    Réponses: 11
    Dernier message: 31/05/2006, 09h49

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