C
Hallo
Vorgeschichte:
Das Projekt wurde mit Visual Studio 2008 und den wxWidgets Application Wizard des wxPack erstellt.
MainFrame->STL_HRFrame
MainPanel->STL_HRPanel
Dialogfenster-> 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();
}
Das ist der Aufruf des Dialogfensters
void STL_HRFrame::OnMenuKostenstelleBearbeiten( wxCommandEvent& event )
{
STL_HRPanel(this).Kostenstellen_Bearbeiten();
}
Kann mir einer sagen wie ich da richtig vor gehen muß?
Gruß Califax