wxListBox: Refresh bei Verwendung von winXP's visual styles



  • Hallo,

    Hab eine Listbox mit ~ 25 Werten drinnen.
    Da diese nicht alle reinpassen, erscheint rechts eine Scrollbar.

    Wenn ich jetzt die visual styles von winXP aktiviere
    (foo.exe.manifest zusammen mit foo.exe in einem Verzeichnis)
    dann verschwinden beim Scrollen der Listbox völlig unkontrolliert einige
    Einträge.

    Vermutlich würde ein Refresh() reichen, um das Problem zu beheben.
    Nur: wie fang ich den Scrollvorgang ab?

    Laut Doku gibts Events nur für einfaches und doppeltes Klicken auf
    einen Listen-Eintrag.

    Bin da jetzt irgendwie ziemlich ratlos und für Tips dankbar.

    Martin



  • Hört sich doch wie ein Bug an. Warum meldest du das nicht bei den Entwicklern?



  • ma schrieb:

    Hört sich doch wie ein Bug an. Warum meldest du das nicht bei den Entwicklern?

    hm... etz wo du's sagst hab ich mal gesucht.
    Scheint ein bekanntes Problem zu sein:

    http://sourceforge.net/tracker/index.php?func=detail&aid=1221147&group_id=9863&atid=109863

    najo, dann gibts halt kein XP-Theme...



  • Huh? Was hat denn der Tracker-Eintrag mit deinem Problem zu tun? Der betrifft doch GTK2...

    Dein Problem kann ich nicht nachvollziehen. Hab's gerade mal mit dem bei wx mitgelieferten Sample-Programm ausprobiert. Keine Probleme (wxWidgets 2.6.1, Mein Theme ist Luna Element). Also würde ich mal vermuten, der Fehler liegt in deinem Code.

    BTW: Du brauchst keine *.exe.manifest für die Themes. Einfach wx.rc includen.



  • frenki schrieb:

    Huh? Was hat denn der Tracker-Eintrag mit deinem Problem zu tun? Der betrifft doch GTK2...

    Ups,
    das war der falsche Link.
    Der is es:
    http://sourceforge.net/tracker/index.php?func=detail&aid=1205260&group_id=9863&atid=109863
    Auch wenns wxPython is, mein Problem ist das selbe.

    frenki schrieb:

    Dein Problem kann ich nicht nachvollziehen. Hab's gerade mal mit dem bei wx mitgelieferten Sample-Programm ausprobiert. Keine Probleme (wxWidgets 2.6.1, Mein Theme ist Luna Element). Also würde ich mal vermuten, der Fehler liegt in deinem Code.

    hmmm...
    das Sample funktioniert auch einwandfrei...

    Wo ist aber hier der Fehler?

    hpp:

    class paListe : public wxListBox
    {
    public:
    	paListe(wxWindow * Parent, wxWindowID Id, const wxPoint & Pos = wxDefaultPosition, const wxSize & Size = wxDefaultSize, long Style = 0, const wxValidator & Validator = wxDefaultValidator, const wxString & Name = "paListe");
    	~paListe();
    
    private:
    
    	wxWindow * m_parent;
    	wxWindowID m_id;
    
    	void m_fill();
    
    	DECLARE_EVENT_TABLE()
    };
    

    cpp:

    #include "paListe.hpp"
    
    BEGIN_EVENT_TABLE(paListe, wxListBox)
    
    END_EVENT_TABLE()
    
    paListe::paListe(wxWindow * Parent, wxWindowID Id, const wxPoint & Pos, const wxSize & Size, long Style, const wxValidator & Validator, const wxString & Name):
    wxListBox(Parent, wxID_HIGHEST + 1, Pos, Size, 0, NULL, Style, Validator, Name),
    m_parent(Parent),
    m_id(Id)
    {
    m_fill();
    }
    
    paListe::~paListe()
    {}
    
    void paListe::m_fill()
    {
    	try
    	{
    
    	MQL & m = *global::mqlObject;
    
    	m = "select id as paNummer from pa order by id";
    	m.execute();
    
    		for (unsigned long row = 0;row < m.rows(); row++)
    		{
    		Append(m[row]["paNummer"]);
    		}
    	}
    	catch(std::exception & Ex)
    	{
    	ShowMessage(Ex.what());
    	}
    }
    

    frenki schrieb:

    BTW: Du brauchst keine *.exe.manifest für die Themes. Einfach wx.rc includen.

    hm...
    ein "#include <wx/msw/wx.rc>"
    bringt aber nichts als Fehler...


Anmelden zum Antworten