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 :

Effacer un Panel proprement


Sujet :

wxWidgets

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Effacer un Panel proprement
    Bonjour,
    J'ai un problème par rapport à l'effacement d'un wxPanel et d'un wxNotebook.
    Je n'arrive pas à le faire proprement.
    donc au départ ma MainFrame est vierge. L'utilisateur clique sur les fonction du menu est ca lance CreateAllPages() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    m_panel = new wxPanel(this);
    m_notebook = new wxNotebook(m_panel, ID_NOTEBOOK, wxDefaultPosition, wxSize(500,500), wxNO_FULL_REPAINT_ON_RESIZE|wxCLIP_CHILDREN|wxBC_DEFAULT); sizerMainFrame = new wxBoxSizer(wxVERTICAL); sizerMainFrame->Add(m_notebook, 1, wxGROW | (wxALL & ~(wxTOP | wxBOTTOM)), 10);
    wxPanel *panel = CreateGeneralPage(m_notebook);
    m_notebook->AddPage( panel, GENERAL_PAGE_NAME, false, GetIconIndex(m_notebook));
    m_panel->SetSizer(sizerMainFrame);
    sizerMainFrame->Fit(this);
    sizerMainFrame->SetSizeHints(this);
    m_panel, m_notebook, sizerMainFrame sont définies dans les variables de la classe MainFrame.

    Je souhaite donc désallouer ces variables, pour retrouver ma MainFrame vierge.
    Voila le code qui foire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       m_notebook->DeleteAllPages();
       sizerMainFrame->Clear(true);
    J'ai tenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       m_panel=NULL;
       m_notebook=NULL;
       sizerMainFrame=NULL;

    Après mon effacement raté, si je relance CreateAllPages(), mon notebook s'affiche plus.

    Quelqu'un aurait une idée pour me faire avancer pls ?

  2. #2
    dug
    dug est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 151
    Points : 84
    Points
    84
    Par défaut
    heu...
    ton teste de mettre NULL à tout le monde... c'est original !
    ça donne rien du tout ça (aucune action), une affectation d'un pointeur à NULL !
    tu aurais fait encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      delete m_panel;
      delete m_notebook;
      delete sizerMainFrame;
    mais bon bref, j'ai une appli qui a plusieurs onglets, l'initialisation ne tient pas en 2 lignes...
    nous on utilise wxAuiNoteBook et wxAuiManager, mais je me suis pas penché sur cette partie du code...

    je serai toi, je commencerai pas regarder les exemples de wxwidgets (dans son répertoire).
    en espérant t'avoir aidé...

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    ma méthode d'allocation a la base est la meme que dans les samples.

    ta remarque sur le delete m'a fait réflechir jsuis aller un peu fouiner
    j'ai trouvé ca notamment.

    http://docs.wxwidgets.org/2.6/wx_allocatingobjects.html

    delete a l'air de marcher, je vous tiendrais au courant

    sinon le coup des pointeur NULL, c un peu mon coté java qui est ressorti, en esperant un garbage collector caché qui m'aurait fait le boulot comme l'objet n'etait plus pointé lol

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    delete marche nickel, c'est parfait !

    merci !

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

Discussions similaires

  1. [JMenuBar] effacement Panel
    Par rems033 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 05/07/2007, 13h51
  2. [C#]Comment effacer le contenu d'un panel !!
    Par drekkii dans le forum Windows Forms
    Réponses: 3
    Dernier message: 25/01/2006, 08h45
  3. [VB6] Ecrire/Modifier/Effacer ds un fichier text-4 Chs/Lg
    Par Jonathan_Korvitch dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 24/12/2002, 18h54
  4. Comment effacer des Items d'un TListView ?
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/11/2002, 10h19
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

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