Richtiger aufruf von wxPanel
-
Hallo
Vorgeschichte:
Das Projekt wurde mit Visual Studio 2008 und den wxWidgets Application Wizard des wxPack erstellt.MainFrame->STL_HRFrame
MainPanel->STL_HRPanelDialogfenster-> hier wird eine datei für den Inhalt des wxChoice angelegt und beim schlissen des Dialogfensters werden die Daten der Datei wieder in das wxChoice eingelesen.
In das Panel hab ich ein wxChoice und ein Button gesetzt
Wenn ich nun auf dem Button clicke öffnet sich ein Dialogfenster und ich kann den Inhalt der wxChoice liste bearbeite(löschen,hinzufügen usw.).
Wenn das Dialogfenster geschlossen wird werden alle Änderrung 1a von STL_HRPanel->wxChoice übernommen und richtig angezeigt.Nun rufe ich aus dem STL_HRFrame->Menu heraus das selbige Dialogfenster auf und nehme ebenfals Änderungen vor , aber die Änderrungen werden von STL_HRPanel nicht aktualisiert.
Benutze folgenden Code:
#include "STL_HRFrame.h" #include "STL_HRAbout.h" BEGIN_EVENT_TABLE( STL_HRFrame, MainFrame ) EVT_MENU( ID_FILE_EXIT, STL_HRFrame::OnExit ) EVT_MENU( ID_HELP_ABOUT, STL_HRFrame::OnAbout ) EVT_MENU( ID_KOSTENSTELL_BEARBEITEN,STL_HRFrame::OnMenuKostenstelleBearbeiten) END_EVENT_TABLE() STL_HRFrame::STL_HRFrame( wxWindow *parent, int id ) : MainFrame( parent, id ) { wxBoxSizer* sizer = new wxBoxSizer( wxVERTICAL ); wxPanel *m_panel = new STL_HRPanel( this ); sizer->Add( m_panel, 1, wxEXPAND ); wxSize panelSize = m_panel->GetSize(); this->SetSizerAndFit( sizer ); this->SetClientSize( panelSize ); } STL_HRFrame::~STL_HRFrame() { } void STL_HRFrame::OnExit( wxCommandEvent& event ) { Close(); } void STL_HRFrame::OnAbout( wxCommandEvent& event ) { STL_HRAbout* about = new STL_HRAbout( this ); about->Show(); } bool STL_HRFrame::arbeits_pfad_pruefen(void) { wxString m_String1; wxString m_String2; // Verzeichnis der Anwendung ermitteln m_str_arbeits_pfad = wxStandardPaths::Get().GetExecutablePath(); // Hier wird das Verzeichnet ermittelt in der die Anwendung gespeichert ist m_String1 = m_str_arbeits_pfad.BeforeLast('\\'); // Hier wird das nächst höhere Verzeichnis gesucht und das gewollte Verzeichnis hinzu gefügt // Hier wird der Pfad für DEBUG Version Festgelegt #ifdef _DEBUG m_String2 = m_String1.BeforeLast('\\')+ wxT("\\Unicode Debug"); #endif //Hierwir der Pfad für RELEAS Version Festgelegt #ifdef NDEBUG m_String2 = m_String1.BeforeLast('\\')+ wxT("\\Haushaltsbuch"); #endif if (m_String1 == m_String2) { return false; } else { wxMessageBox( _T("Bitte legen Sie einen Ordner mit dem Namen \n") wxT(" # Haushaltsbuch # \n") wxT("an. Und kopieren Sie die Datei \n") wxT(" # STL_HR.exe # \n") wxT("in den Ordner mit dem Namen \n") wxT(" # Haushaltsbuch # . ")); return true; } } void STL_HRFrame::OnMenuKostenstelleBearbeiten( wxCommandEvent& event ) { STL_HRPanel(this).Kostenstellen_Bearbeiten(); }
Hier wird das Dialogfenster aufgerufen.
void STL_HRFrame::OnMenuKostenstelleBearbeiten( wxCommandEvent& event ) { STL_HRPanel(this).Kostenstellen_Bearbeiten(); }
Kann mir einer sagen wie ich da richtig vor gehen muß?
Gruß Califax
-
Hallo
Ich habe eine Lösung gefunden. weis allerdings nicht ob es der richtige Weg.
unter dem Link
http://forums.wxwidgets.org/viewtopic.php?p=118400#118400Könnt ihr das Projekt einsehen.
Gruß Califax