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

wxWidgets Discussion :

Récupérer une valeur à partir de la souris dans un ListCtrl


Sujet :

wxWidgets

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut Récupérer une valeur à partir de la souris dans un ListCtrl
    Bonjour à tous, je suis actuellement en stage pour développer un logiciel utilisant les wxwidgets.
    Voici donc une de mes questions :

    J'ai créé un ListCtrl dans une classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      InsertColumn(0,_("Numéro du puits"),wxLIST_FORMAT_CENTER,150);
      InsertColumn(1,_("Durée de l'analyse"),wxLIST_FORMAT_CENTER,150);
      InsertColumn(2,_("Temps"),wxLIST_FORMAT_CENTER,100);
      InsertColumn(3,_("Valeur"),wxLIST_FORMAT_CENTER,100);
      InsertColumn(4,_("Dérivée première"),wxLIST_FORMAT_CENTER,200);
      InsertColumn(5,_("Dérivée seconde"),wxLIST_FORMAT_CENTER,200);
      InsertColumn(6,_("Température"),wxLIST_FORMAT_CENTER,100);
    L'ouverture d'un onglet va ajouter une ligne dans ma liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          listeStats->InsertItem(0,numeroPuits);
          listeStats->SetItem(donnees,6,temperature);
    Maintenant j'aimerai que lorsque je clique sur une ligne, il m'affiche l'onglet correspondant aux données de la ligne, sur le numéro du puits. Mon premier problème se situe pour récupérer la valeur d'un item, pour le moment j'ai cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void LysisTimerFrame::OnSelectionListe(wxListEvent& event)
    {
      wxString contenuCellule;
      obtenirDonnees(1,0,contenuCellule);
      wxMessageBox(_("Numéro du puits sélectionné :") +contenuCellule);
    }
    Avec pour la méthode obtenirDonnees( numéro de ligne, numéro de colonne, et les données). Seulement là,j'aurai à chaque double clic sur la liste, l'item correspondant à la 2e ligne. Comment faire, pour changer cette valeur de façon dynamique, avec un évenement souris qui passerait le paramètre de la ligne sélectionnée ?

    Merci d'avance

  2. #2
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Salut.

    Si tu veux gérer le double-clic, il faut passer par l'événement "EVT_LIST_ITEM_ACTIVATED".
    Ça évitera d'avoir a gérer la sélection ou la dé-sélection en même temps.

    Ensuite, il te suffit de récupérer l'index de l'élément concerné avec "wxListEvent::GetIndex()" et le tour est joué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void LysisTimerFrame::OnSelectionListe(wxListEvent& event)
    {
      wxString contenuCellule;
      obtenirDonnees(event.GetIndex(),0,contenuCellule);
      wxMessageBox(_("Numéro du puits sélectionné :") +contenuCellule);
    }
    @+
    Xav'

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    C'est bien l'évenement que j'ai utilisé, merci, je ne connaissais pas la fonction GetIndex, et là ca marche nickel

    Du coup, une autre question ( rassure toi, je ne vais pas te demander de faire le projet à ma place, mais au bout de 2 jours de recherches, je laisse un peu tomber), j'ai donc mes onglets qui sont ouverts et en cliquant sur une ligne, je voudrai que l'onglet correspondant au numéro du puits s'affiche. J'ai déjà codé en gros ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void LysisTimerFrame::CreationOnglet()
    {
        onglet *creationOnglet = new onglet(this);
        creationOnglet->nomPage.Append(_(",puits: "));
        creationOnglet->nomPage.Append(numeroPuits);
        premierePage->AddPage(creationOnglet,creationOnglet->nomPage,true);
    }
    et dans ma classe d'onglet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void onglet::createControls()
    {
      static int numeroPage = 1;
      wxString numPage = wxString::Format(wxT("%i"),(int)numeroPage);
      nomPage = _("Fichier ");
      nomPage.Append(numPage);
     
      numeroPage += 1;
     
    }
    Mais dans tout ca, je ne pense pas avoir utilisé une variable pour identifier un onglet spécifique ayant un lien avec un numéro de puits, du style que le 2e onglet ouvert sera correspondant à la 2e ligne dans mon textctrl.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          listeStats->InsertItem(donnes,0,numeroPuits);
          listeStats->SetItem(donnees,6,temperature);
    Merci encore

    EDIT : c'est bon j'ai trouvé, j'ai rajouté une colonne "index" pour trouver le numéro de l'onglet, et utilise SetSelection(), maintenant je m'attaque à la suppression d'une ligne dans le listCtrl lors de la fermeture de l'onglet correspondant...

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Du coup je comprends pas trop la documentation des évenements de l'auinotebook :

    EVT_AUINOTEBOOK_PAGE_CLOSED(winid, fn):

    winid représente quoi ? car j'utilise des panel pour créer des onglets, je vois pas trop comment intercepter l'évenement et aussi je saisi pas la signification de "fn".
    Jusqu'à maintenant j'avais que des macros du style (id,func)

  5. #5
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Pour être franc, je n'ai jamais utilisé les wxAui.

    Malgré tout, il ne me semble pas voir, dans la macro que tu présentes, une grand différence par rapport aux macros des autres contrôles "normaux", mis à part les noms des paramètres :

    EVT_AUINOTEBOOK_PAGE_CLOSED(winid, fn) :
    • winid correspond à l'id du contrôle wxAuiNotebook
    • fn correspond à la fonction à appeler quand cet événement est rencontré


    C'est à mon avis une simple erreur de suivi des conventions dans les noms des paramètres.

    @+
    Xav'

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Je suis parti de ce principe, mais je suis un peu perdu...

    Je veux créer plusieurs onglets, je fais appel à mon constructeur onglet qui dérive de wxPanel et je définis à chaque onglet un id et je l'affiche :

    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
     
    void LysisTimerFrame::CreationOnglet()
    {
     
        static int idOnglet = 0;
     
        onglet *creationOnglet = new onglet(this);
     
        wxString valeurid;
     
        creationOnglet->SetId(idOnglet);
        int valeur = creationOnglet->GetId();
        valeurid << valeur;
     
        creationOnglet->nomPage.Append(_(",puits: "));
        creationOnglet->nomPage.Append(numeroPuits);
        premierePage->AddPage(creationOnglet,creationOnglet->nomPage,true);
        idOnglet +=1;
        wxMessageBox(_("Numéro de l'id :" + valeurid));
    }
    Du coup j'ai déclaré dans mon .h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    enum
    {
       idOnglet
    }
    et dans ma table d'événements :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EVT_AUINOTEBOOK_PAGE_CLOSED(idOnglet, LysisTimerFrame::OnFermerOnglet)
    Je dois pas être sur la bonne piste, car je ne fais jamais appel à mon évenement PAGE_CLOSED lors de la fermeture d'un onglet

  7. #7
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    En fait, il ne s'agit pas de l'id de l'onglet, mais de celui du notebook.

    Et avec le paramètre wxAuiNotebookEvent, tu pourras récupérer l'index de la nouvelle page sélectionnée ( GetSelection() ), et éventuellement celui qui était sélectionné avant le changement ( GetOldSelection() ) si tu as besoin d'annuler l'événement.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Ok, forcément ca pouvait pas marcher.
    Voilà comment je l'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void LysisTimerFrame::OnFermerOnglet(wxAuiNotebookEvent& event)
    {
      int valeurInt = premierePage->GetSelection();
      wxString valeur;
      valeur << valeurInt;
      wxMessageBox(_("Fermeture de l'onglet: ") + valeur);
    }
    premierePage est mon notebook.
    Ici, j'ai bien la capture de l'évenement, seulement getSelection me renvoie l'emplacement de l'onglet dans le sizer, donc le 1er onglet à une valeur de -1, le deuxième de 0 et le plus à droite aura la valeur max. Quand je ferme un onglet, l'onglet de droite prendra la valeur de celui qui a été fermé, ce qui fausse un peu la donne.
    2 semaines que les widgets sont entrés dans ma vie, et ca fait mal...

    EDIT : en fait c'est plus compliqué que ça. En soit, ce problème n'en est pas un. Le plus embêtant et que si je supprime un onglet ainsi que la ligne, et que j'ai un ID pour un onglet d'une valeur = 4 par exemple, et que je n'ai plus que 3 onglets d'ouverts, si je clique sur la listctrl de l'onglet à la valeur 4, il ne me trouvera pas l'onget même s'il est ouvert.
    Bref, je ne t'embête pas plus longtemps, ca me semble tordu, je vais essayer de voir ca, merci pour ton aide, je reviendrai bien assez tôt

  9. #9
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    En fait, je verrai plus quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void LysisTimerFrame::OnFermerOnglet(wxAuiNotebookEvent& event)
    {
      int valeurInt = event.GetSelection();
      ......
    }
    Je ne suis pas certain que tu puisses récupérer l'index de l'onglet concerné.
    Si jamais, tu peux peut-être passer par l'événement "EVT_AUINOTEBOOK_PAGE_CLOSE" plutôt que "EVT_AUINOTEBOOK_PAGE_CLOSED" (c'est juste une piste de recherche que je te donne, pas une solution).

    Tu peux éventuellement ajouter une valeur "ClientData" aux éléments de ton wxListCtrl afin de pouvoir stocker un état "Onglet ouvert/fermé".

    @+
    Xav'

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Après quelques essais infructueux, on m'a dit que la solution est de faire passer un paramètre à ma fonction de création d'onglet. Donc pour chaque onglet créé, je définit un numéro d'index. Puis ensuite lorsque je clique dans ma liste de contrôle, il faut que je fasse une boucle for qui va me passer les onglets ouverts et comparer la valeur que je lui ai donné dans ma liste de contrôle. Si la comparaison est bonne, ca retournera l'onglet...

    Après l'écrire c'est autre chose

    EDIT: voilà y a du neuf :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    for (i=0;i < notebook->GetPageCount(); i++)
      {
      if (((classe*)notebook->GetPage(i))->index==indexCellule)
          {
            notebook->SetSelection(i);
     
          }
      }
    Merci Xav pour ta contribution

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    J'ai encore des soucis, mais il est complétement différent celui là :

    J'ai créer des textctrl pour que l'utilisateur remplisse les différentes informations d'une personne dans un wxDialog, puis je récupère les infos dans ma Frame principale. J'ai donc créé une structure comportant mes variables.

    Si je créé plusieurs personnes, comment éviter la perte des données des autres personnes et aussi comment pourrais je accéder aux infos d'une personne particulière.

    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
     
     
    struct t_patientInformations
        {
          wxString uuidPatient;
          wxString IdentifiantPatient;
          wxString Nom;
          wxString Prenom;
          wxString dateNaissance;
          char Sexe;
        };
     
    struct t_patientInformations patient;
          patient.uuidPatient = numeroIndex;
          patient.IdentifiantPatient = boiteChoixPuits->m_idPatient->GetValue();

  12. #12
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Hello

    J'avoue ne pas trop comprendre quel est ton problème.
    Peux-tu être plus précis, stp.

    @+
    Xav'

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Je dois créer une base de données de patients. Par analogie avec des dossiers médicaux, je souhaite faire une structure renseignant nom prenom sexe... sur chaque patient que l'utilisateur va entrer via un formulaire.

    J'ai donc créé ma structure, mais si j'appelle à chaque fois ma fonction, il va écraser systématiquement les données que j'avais entré précédemment. En gros je suppose, qu'il va falloir créer un tableau de ma structure, mais aussi que ce tableau soit dynamique, qu'il ajoute une case mémoire à chaque appel à la boucle.

    Je sais pas si c'est mieux expliqué

  14. #14
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Salut.

    C'est bien ce que j'avais compris en fait.

    La solution est toute simple : tu peux utiliser une wxList (c'est l'implémentation wxWidgets d'une liste chainée).
    Tu pourras y ajouter dynamiquement des éléments, y accéder, les supprimer, ...

    Regarde l'aide à ce sujet (http://docs.wxwidgets.org/stable/wx_wxlist.html), et éventuellement, si tu veux un projet complet qui l'utilise, il y a celui-là : http://www.wxdev.fr/projet9-wxToDoList.html (le projet est un peu complexe, mais il marche à merveille).

    Si tu as besoin de plus d'infos, n'hésites pas (j'essayerais éventuellement de trouver le temps de te concocter quelque chose de plus simple utilisant les wxList

    @+
    Xav'

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Merci Xav, je vais regarder cette solution , la solution des liste chainées me faisait peur car elle ravivaient des vieux souvenirs de fac en C, mais si y a un widegets qui joue ce rôle, je veux bien me pencher dessus

    EDIT : en fait pas la peine de se casser la tête la dessus, je ne m'occupe pas de cette partie là...

  16. #16
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Hop, de retour

    J'ai un nouveau problème, dans mon formulaire de données, il faut que si l'utilisateur remplit des champs, et que s'il fait une mauvais manipulation ( appuie sur echap, ou clique sur Annuler ) une boite de dialogue s'affiche lui notifiant que des champs ont été saisi, et qu'il peut confirmer ou infirmer son choix de quitter la boite de dialogue. Je suppose qu'il doit s'agir d'un évenement...

  17. #17
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Salut.

    Effectivement, il s'agit d'un événement à intercepter.

    Il faut gérer l'événement "clic sur le bouton Annuler" (le fait d'appuyer sur Echap ou de fermer la boite de dialogue seront également interceptés).

    Dans la méthode événementielle, tu demandes confirmation, et si l'utilisateur veut bien fermer, tu n'as plus qu'à appeler EndModal(wxID_CANCEL).

    @+
    Xav'

  18. #18
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Merci, c'est fonctionnel

    Maintenant, mon dernier contrôle est de vérifier si certaines données n'auront pas de doublons lorsque l'utilisateur sélectionnera un numéro :

    Via un combobox, je récupère la valeur ( 1 à 8).
    Mon idée est de construire un tableau d'entier, d'ajouter le choix de l'utilisateur dans le tableau, et continuer...
    Pour le contrôle, je souhaiterai faire une boucle for, pour vérifier si le choix qu'il demande n'a pas déjà été entré ( si le numéro n'est pas déjà dans le tableau ) et auquel cas, il devra en choisir un autre.

    J'ai vu un peu de doc sur les wxArrayInt, mais elle n'est pas trop complète. Je pense que Insert est pour insérer une valeur, mais il faudrait aussi que je supprime des valeurs dans le tableau et aussi le parcourir pour vérifier si le numéro n'existe pas. As-tu un petit exemple qui pourrait me mettre sur la piste ?

  19. #19
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    En fait, wxArrayInt utilise wxArray.
    Il te suffit de regarder la doc concernant cette dernière classe, et tu aura le fonctionnement de wxArrayInt, wxArrayString, wxArrayDouble, wxArrayShort, ...

    Comme tu l'as dit, "Insert" sert à insérer une ou plusieurs données à un endroit précis.
    Sinon, tu as la méthode "Add" pour simplement ajouter des données en fin de tableau, "Remove" pour en enlever, et "Index" pour trouver la position d'un élément (et si cet élément n'existe pas, tu obtiens la valeur wxNOT_FOUND.

    @+
    Xav'

  20. #20
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Et encore un problème de résolu merci

    Mais ce n'est pas tout... j'en ai un autre. Peut on changer une variable booléenne qui ne se situe pas dans la même classe ?

    Dans mon main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    boiteChoixPuits->m_messageErreur = true;
              boiteChoixPuits->m_erreurPuitsNonRenseigne = true;
    Dans ma classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if(m_messageErreur)
      {
        if (m_erreurPuitsNonRenseigne)
        {
          m_texteMessageErreur = new wxStaticText(this,wxID_ANY,_("Veuillez choisir un numéro de puits"));
        }
    wxBoxSizer *cadreInformations = new wxBoxSizer(wxHORIZONTAL);
        cadreInformations->Add(m_texteMessageErreur,1,wxALL,0);
        cadre->Add(cadreInformations,1,wxALL,5);
      }
    En fait dans mon main, s'il détecte qu'un choix n'est pas correct, il change les valeurs des 2 booléens (je les mets à faux en tout début), et m'affiche un cadre dans ma fenêtre.
    Il y a sans doute plus simple à faire, mais c'est le mieux que j'ai pu trouver, et ca ne marche pas. J'ai l'impression, qu'il ne me change pas mes valeurs...

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/12/2013, 12h46
  2. Récupérer une valeur à partir d'un datatable
    Par asmaSassou dans le forum JSF
    Réponses: 14
    Dernier message: 04/05/2012, 15h05
  3. [MySQL] Récupérer une valeur à partir d'une liste select
    Par xymagic dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 15/11/2011, 12h22
  4. Réponses: 1
    Dernier message: 28/10/2011, 11h32
  5. Réponses: 2
    Dernier message: 17/06/2005, 14h38

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