wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :598

Membres en ligne : 0
Invités en ligne : 6
Pub hébergeur
Pourquoi cette pub ?

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» Supprimer des éléments d'une fenêtre
Conversation (Résolue) : Supprimer des éléments d'une fenêtre
05-02-2010 22:00:40  Supprimer des éléments d'une fenêtre #1
Bourinax (Nouveau membre)
Inscrit le : 23-10-2009
Messages: 4
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour,

Je cherche à faire une fenêtre avec un nombre d'éléments variables à l'intérieur (en pratique ceci sera contrôlé par un menu, mais là n'est pas le problème).
Les éléments en question sont en fait des graphiques.

Mon Layout est un peu compliqué car j'associe des contrôles au graphs, mais ce qu'il faut retenir du Layout est ceci :
- tout est dans le BoxSizer m_Sizer4
- dans ce Boxsizer il y a m_SizerCurve[0], m_SizerCurve[1] et m_SizerCurve[2]
- dans chacun de ces BoxSizers il y a tout un bazar pour gérer le graph.

J'ai constaté qu'il est plus difficile de détruire les graph que de les construire^^

Après quelques tâtonnements : j'arrive à ce code pour la fonction qui doit "détruire un graph" :

Code wxWidgets:

void wxGUIFrame::delete_graph()
{
    m_gn--;
 
    delete m_courbe[m_gn];
    m_Sizer4->Detach(m_PanelCurve[m_gn]);
    m_PanelCurve[m_gn]->Destroy();
 
    m_Sizer4->Detach(m_ParametersChoice[m_gn]);
    m_ParametersChoice[m_gn]->Destroy();
 
    m_Sizer4->Detach(m_CurveChoice[m_gn]);
    m_CurveChoice[m_gn]->Destroy();
 
    m_Sizer4->Detach(m_SizerControls[m_gn]);
    m_SizerCurve[m_gn]->Remove(m_SizerControls[m_gn]);
 
    m_Sizer4->Detach(m_SizerCurve[m_gn]);
    m_Sizer4->Remove(m_SizerCurve[m_gn]);
 
    m_CurveChoice[m_gn] = NULL;
    m_SizerControls[m_gn] = NULL;
    m_ParametersChoice[m_gn] = NULL;
    m_courbe[m_gn] = NULL;
    m_PanelCurve[m_gn] = NULL;
    m_SizerCurve[m_gn] = NULL;
 
    m_Sizer4->Layout();
 
}


Rem : j'ai rajouté les Detach, mais ça n'a pas résolu le problème, il me semble qu'il sont de toute façon appelés automatiquement lors de la destruction des objets...

J'efface bien le graph qu'il faut, mais le problème est qu'ensuite le m_Sizer4 se comporte comme si l'autre sizer existait encore (il occupe seulement la moitié de la place, alors que l'autre graph n'apparait plus). Le m_Sizer4->Layout(); est normalement sensé éviter ça selon la doc :/

Voila si quelqu'un sait ce qui cloche, je suis tout ouïe :D
----------
Bon ben finalement j'ai fini par trouver moi même une solution, j'ai complètement changé de méthode, j'ai utilisé wxBoxSizer::Hide et wxBoxSizer::Show, le sizer se comporte alors comme je veux.

Dernière modification par Bourinax (08-02-2010 16:17:21)

09-02-2010 22:21:45  Re: Supprimer des éléments d'une fenêtre #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1147
Snippets: 23
Tutoriels: 6
Site web
Hors ligne
Salut
Bourinax a écrit:
Bon ben finalement j'ai fini par trouver moi même une solution.
Désolé de n'avoir pas pu regarder ça de plus près, mais je suis un peu surbooké ces temps. :/

N'hésites pas à revenir quand même si tu as besoin

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» Supprimer des éléments d'une fenêtre