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 :

Actualisation du TreeCtrl


Sujet :

wxWidgets

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 21
    Points
    21
    Par défaut Actualisation du TreeCtrl
    Bonjour,
    Je suis actuellement face à un petit problème: J'utilise un TreeCtrl, qui à pour but d'afficher une liste de séances, récupérer directement dans une BDD.
    Je vais donc chercher dans la base, puis j'affiche. Tout ce passe bien. Le problème arrive lorsque j'appel un modal, qui a pour but de créer une nouvelle séance. Au retour de ce modal, il y a bien dans la BDD la nouvelle séance fraichement créée. Mais lorsque au retour du modal j'utilise à nouveau ma fonction afficheListe(), le TreeCtrl ne se remet pas a jour. Cette fonction marche à l'init de ma fenetre, mais pas au retour du modal. Y a t il une fonction qui réinitialise l'arbre, et que je dois appeler avant? Je met le 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
     
    void FrameInit::afficheSeance()
    {
        sequences.clear();
        wxString msg;
        IBPP::Timestamp t_dateTimeSequ;
        std::string typeSeance;
     
        //récup listeDate et affichage
        std::vector<Sequence> listeDate;
     
        sequences=m_bdd->RecupSeances(IDJoueur,IDEntraineur);
     
        m_root = TreeCtrl1->AddRoot(wxT(""));
        wxDateTime tmp_temps = (time_t)0;
        wxTreeItemId t_date, t_heure,t_typeSeance;
        wxString ligne;
        for (unsigned int i=0; i < sequences.size(); i++)
        {
            if (sequences[i].s_temps.GetDateOnly() != tmp_temps.GetDateOnly())
            {
                tmp_temps = sequences[i].s_temps;
                t_date = TreeCtrl1->AppendItem(m_root, tmp_temps.Format(wxT("Le %d/%m/%Y")));
            }
            ligne.Clear();
            ligne << sequences[i].s_temps.Format(wxT("à %H:%M:%S - ")) << sequences[i].s_typeSeance;
            t_heure = TreeCtrl1->AppendItem(t_date, ligne);
        }
        if (sequences.size() > 0)
        {
            TreeCtrl1->Expand(t_date);
            TreeCtrl1->SelectItem(t_heure);
        }
    }
    Les appel se font à l'init dans un timer, et au retour de la frame:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Conditions* condi = new Conditions(condition,tirr,IDEntraineur,IDJoueur,m_bdd,type,this);
        condi->ShowModal();
        afficheSeance();
        condition->reset();
        tirr->reset();

  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.

    Suivant le style que tu as donné à ton wxTreeCtrl, tu ne peux pas appeler plusieurs fois la méthode "AddRoot" (il faut le style wxTR_HIDE_ROOT pour que ça marche).

    Mais à mon avis, par principe, il ne faut jamais l'appeler plusieurs fois.
    Tu peux par contre vérifier si l'élément root existe avant de le créer :

    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
    void FrameInit::afficheSeance()
    {
        sequences.clear();
        wxString msg;
        IBPP::Timestamp t_dateTimeSequ;
        std::string typeSeance;
     
        //récup listeDate et affichage
        std::vector<Sequence> listeDate;
     
        sequences=m_bdd->RecupSeances(IDJoueur,IDEntraineur);
     
        m_root = TreeCtrl1->GetRootItem();
        if (!m_root.IsOk()) m_root = TreeCtrl1->AddRoot(wxT(""));
     
        ......
    }
    @+
    Xav'

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 21
    Points
    21
    Par défaut
    le problème vient du fait que je ne puisse pas actualiser mon arbre. Le plus simple serait de supprimer complètement l'arbre, puis de le recréer? mais comment?

  4. #4
    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
    Ça ne change rien si tu remplaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        m_root = TreeCtrl1->AddRoot(wxT(""));
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        m_root = TreeCtrl1->GetRootItem();
        if (!m_root.IsOk()) m_root = TreeCtrl1->AddRoot(wxT(""));
    ?

Discussions similaires

  1. [SWT] actualiser une fenêtre
    Par cootchy dans le forum SWT/JFace
    Réponses: 7
    Dernier message: 15/05/2004, 23h53
  2. [MFC] Probleme d'actualisation d'une listbox
    Par Robleplongeur dans le forum MFC
    Réponses: 5
    Dernier message: 13/05/2004, 14h15
  3. [ JSP ][ Débutant ] Liste déroulante + actualisation de page
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 17/04/2004, 19h51
  4. [CR7]Actualisation des données depuis VB
    Par elifqaoui dans le forum SDK
    Réponses: 4
    Dernier message: 24/11/2003, 13h44
  5. Actualisation d'une liste "dépendante".
    Par Trilby dans le forum ASP
    Réponses: 6
    Dernier message: 19/11/2003, 18h39

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