Frame*parent an eine ListBox übergeben??



  • Hi, ich stehe mir gerade voll auf dem Schlauch:
    nutze wxWindows und VC++
    mein Problem ist, das ich eine Klasse GFrame habe in dem ein Textfeld und eine ListBox angezeigt wird.
    Wenn ich mit der Mouse auf die Liste klicke geht ein Filedialog auf. Wenn ich eine Datei ausgewählt habe und durch OK bestätigt habe, soll im Textfeld der Pfad der Datei angezeigt werden.
    Da das MouseEvent aber in der Klasse MyListBox definiert ist hab ich in der Methode OnMouse(...) keinen Zufriff auf das Textfeld.
    Und den Konstruktor von MyListBox einfach um 'GFrame *frame' erweitern geht net.
    Aber irgendwie muss ich der pListe doch einen Zeiger auf das Textfeld oder am besten den ganze Frame geben können??

    #include "MyListBox.h"
    class GFrame : public wxFrame
    {
    public:
    	GFrame(const wxChar *title, int width, int height);
    protected:
    	MyListBox *pListe;
    	wxTextCtrl *pText;
    	enum {	ID_TEXT	};
    };
    
    ...
    #include "GFrame.h"
    GFrame::GFrame(const wxChar *title, int width, int height)
    	: wxFrame(...)
    {
    	pListe = new MyListBox(this);
    	pText  = new wxTextCtrl(this, ID_TEXT, "value");
    }
    
    class MyListBox : public wxListBox
    {
    public:
    	MyListBox(wxWindow *window);
    	void OnMouse(wxMouseEvent& event);
    protected:
    	DECLARE_EVENT_TABLE();
    	enum { ID_LISTBOX };
    };
    
    MyListBox::MyListBox(wxWindow *parent) : wxListBox (parent, ...)
    {}
    
    BEGIN_EVENT_TABLE(MyListBox, wxListBox)
    	EVT_LEFT_DCLICK(MyListBox::OnMouse)
    END_EVENT_TABLE()
    
    void MyListBox::OnMouse(...)
    {
    	wxFileDialog *dlg = new wxFileDialog(this, "Bilder auswählen", ID_LISTBOX,  ...);
    	if(dlg->ShowModal() == wxID_OK)
    	{
    		// Hier soll nun der Pfad ins Textfeld geschrieben werden!!
    	}
    }
    

    schon mal THX im vorraus
    Smashi



  • Hi,

    du koenntest beispielsweise deiner 'MyListBox'-Klasse dem Konstruktor en weiteren
    Parameter mitgeben, welcher vom Typ 'wxTextCtrl *' ist und dann deinen pText-Pointer
    uebergeben.

    Oder du bastelst dir entsprechende Set/Get-Methoden.

    mfg
    v R



  • Das hatte ich eigentlich auch schon probiert, hat aber nicht funktioniert!!
    Auch kein wunder, ich habe denn Zeiger auf Textfeld an die Listbox übergeben und danach erst das Textfeld erzeugt und dadurch logischerweise einen Fehler bekommen!!

    Nun geht alles. Danke
    Smashi


Anmelden zum Antworten