[wx] An wxListBox Event schicken?



  • Hallo,

    ich möchte an eine ListBox ein wxEVT_COMMAND_LISTBOX_SELECTED -Event schicken, welches einen simplen Klick auf ein Item ersetzen soll. Jedoch klappt es mit folgender Methode nicht:

    m_MeineListBox->ProcessEvent(wxListEvent(wxEVT_COMMAND_LISTBOX_SELECTED));
    

    Mal davon abgesehen, dass ich auch nicht weiß, wie man der ListBox sagt, welches Item selektiert werden soll.
    Weiß jemand Rat?


  • Mod

    Wieso benutzt du nicht einfach SetSelection?



  • Weil ich der Listbox per Connect einen Eventhandler für wxEVT_COMMAND_LISTBOX_SELECTED registriert habe. Sobald also ein Item mit der Maus selektiert wird, passiert etwas bestimmtes. SetSelection jedoch selektiert nur das Item, löst aber nicht den Event aus, den ich ja brauche, um das auszuführen, was beim echten Klicken auf ein Item auch passiert.


  • Mod

    Naja, aber du kannst die Handlermethode ja selber direkt danach aufrufen.
    Ansonten müsste das mit SetPendingEvent gehen.



  • wxListBox und alle darunter liegenden Klassen besitzen aber keine SetPendingEvent Methode. Und wie ich die Eventmethode direkt aufrufen soll, weiß ich leider nicht.

    Ich muss ja auch den Index des selektierten Items mit übergeben, allerdings finde ich in der wxListEvent -Klasse nirgends eine Set-Methode zum Setzen des Wertes, noch bietet mir der Konstruktor dieser Klasse irgendwelche Möglichkeiten.


  • Mod

    Das müsste doch ein CommandEvent sein.

    listbox->SetSelection(3);
    wxCommandEvent event(wxEVT_COMMAND_TYPE);
    OnListBoxClicked(event);
    

    Was selektiert wurde, erfährst du ja von der Listbox.



  • Danke, jetzt funktioniert es endlich. Nach Deinem eben genannten Lösungsvorschlag habe ich es ja bereits versucht, allerdings bin ich in eine komplett falsche Event-Methode einer anderen Listbox gerutscht, und hab' mich dabei natürlich total verzettelt.

    Bisher habe ich in der Eventmethode immer über das übergebene wxCommandEvent Objekt nachgefragt, welches Item selektiert wurde. Dass ich aber auch mit GetSelection unabhängig vom wxCommandEvent die aktuelle Selektion abfragen kann, ist mir nicht in den Sinn gekommen.

    Vielen Dank für die Hilfe phlox. 🙂


Anmelden zum Antworten