[wxWidgets Problem] Button Event



  • Ich habe folgendes Problem: In einem wxFrame habe ich einen wxButton plaziert. Wenn ich auf den Knopf klicke geschieht nichts, obwohl ich im EVENT_TABLE den EVT_BUTTON hinzugefügt habe.

    Den wxButton habe ich btnAnlegen genannt.

    Hier mein relevanter Code:

    BEGIN_EVENT_TABLE( frmSitzungen,wxFrame)
      EVT_BUTTON(-1,frmSitzungen::VwXVwXEvOnButtonClick)	
      EVT_GRID_CELL_LEFT_DCLICK(frmSitzungen::VwXVwXEvOnGridCellLeftDClick)
    END_EVENT_TABLE()
    
    void frmSitzungen::VwXVwXEvOnButtonClick(wxCommandEvent& event){
     wxObject *m_wxWin = event.m_eventObject ;
    
     if(m_wxWin==btnAnlegen){btnAnlegen_VwXEvOnButtonClick(event,-1);return;}
    
     // ...
    
     event.Skip(true);
    }
    

    In die Funktion btnAnlegen_VwXEvOnButtonClick habe ich Code geschrieben um eine Meldung in eine Textdatei auszugeben, diese erscheint nie - ebenso wie der Rest den diese Funktion machen sollte.

    Wer weiss Rat?


  • Mod

    statt -1 solltest du bei EVT_BUTTON die gültige ID des Buttons angeben.
    (-1 ist default, und funktioniert imho nicht)



  • Danke, funktioniert.

    Kann es sein, dass bei einem Button pro Frame die "-1" wohl funktioniert?


  • Mod

    cookie80 schrieb:

    Danke, funktioniert.

    Kann es sein, dass bei einem Button pro Frame die "-1" wohl funktioniert?

    kann sein, muss aber nicht.
    Wenn nur ein Steuerelement die Default ID (-1) hat, dann kann das sein,
    generell solltest du aber allen Steuerelementen eine ID zuweisen,
    wenn du zur Laufzeit drauf zu greifen musst.
    Dies kannst du auch per wxNewId() machen, dann musst du aber die Funktion per Connect binden:

    button2 = new wxButton(this, wxNewId(), wxT("Show Values"), wxDefaultPosition, wxDefaultSize, 0);
    ...
    Connect(button2->GetId(),wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(MyFrame::OnShowValues));
    

Anmelden zum Antworten