wxWindows: Auf TextCtl in einem Panel zugreifen?



  • Moin,

    ich habe gerade mal angefangen mich ein wenig mit wxWindows (wxWidgets) zu beschäftigen. Ich habe nun folgendes Problem:

    Ich habe ein Panel in einem Notebook erzeugt. Das Panel hat wiederum ein TextCtl. Auf dieses TextCtl möchte ich später zugreifen können. Wie mache ich das?

    Also ich erstelle ein Notebook:

    m_notebook = (cNotebook *) NULL;
    	m_notebook=new cNotebook(this,ID_NOTEBOOK);
    
    	m_notebook->CreatePage("Test");
    

    Die CreatePagemethode sieht folgendermaßen aus:

    void cNotebook::CreatePage(const wxString& pageName)
    {
    	cPanel *panel = new cPanel(this);
    
    	wxBoxSizer *sizerPanel = new wxBoxSizer(wxVERTICAL);
    	sizerPanel->Add(panel->m_text, 1, wxEXPAND);
    	panel->SetSizer(sizerPanel);
    	this->AddPage(panel,pageName,FALSE,-1);
    }
    

    Und zu guter letzt noch die cPanel-Klasse:

    class cPanel:public wxPanel
    {
    public:
    	cPanel(wxWindow *parent):wxPanel(parent)
    	{
    		m_text = new wxTextCtrl(this, -1, wxEmptyString,
    			wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
    	}
    	wxTextCtrl* m_text;
    };
    

    Ich muss doch noch im nachhinein auf die Elemente im Panel zugreifen können?



  • Was genau ist denn das Problem?

    m_text->getText() oder was du halt brauchst...



  • Wenn ich mit AddPage ein Panel dem Notebook hinzugefügt habe, habe ich leider keine Referenz mehr auf das Panel mit der ich dann auf m_text zugreifen könnte.
    Bietet wxWidgets da eine Möglichkeit an die Referenz wieder heranzukommen??
    wxWidgets muss sich das ja auch irgentwie merken.
    Muss ich mir etwa selber für jedes Panel eine Referenz speichern, damit ich drauf zugreifen kann? Wenn ja, wie mache ich es am besten, denn die Anzahl variiert zur Laufzeit.



  • stl - container

    std::vector<wxPanel*> m_vptrPanels;

    dann jede referenz mit m_vptrPanels.push_back(...) einfügen.



  • Danke

    funktioniert jetzt bestens


Anmelden zum Antworten