Frage

Ich verwende ein Popup-Menü mit wxTaskBarIcon an Fenstern (wxWidgets-2.8.9). Wenn ich Popup-Menü mit Radio Artikel füllen sie den Zustand nicht ändern, wenn darauf geklickt. Erster Punkt in Popup-Menüliste wird als ausgewählt markiert. Aber anderes Element auswählen dies nicht ändern.

Zur Zeit gibt es kein Element Click-Ereignishandler (Anwendung ist mehr wie UI Prototyp). Soll ich manuell Artikel Prüfstatus in diesem Handler aktualisieren oder es ist noch Rahmen Pflicht?

War es hilfreich?

Lösung

Sie sollten EVT_UPDATE_UI(yourCommandID, yourEventHandler) zur Überprüfung / Deaktivieren und Aktivieren / Deaktivieren Menüpunkte verwenden. In Ihrem Handler UpdateUI Fall sollten Sie Fälle angeben, wenn Ihr Element aktiviert ist Z.B. Sie haben Gruppe mit Befehlen ID_RADIO_1 und ID_RADIO_2 Radiobutton und sie sollten je nach Zustand bool m_SomeConditionVariable geprüft werden, dann sollten Sie für diese 2 Event-Handler erstellen wie

void OnRadio1UpdateUI(wxUpdateUIEvent & event)
{
    event.Checked(m_SomeConditionVariable == true);
}

void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
    event.Checked(m_SomeConditionVariable == false);
}

und in diesem Fall erste Funkpunkt wird nur geprüft werden, wenn Variable falsch ist und die zweite aufgegebene wird, wenn Variable wahr ist.

Sie verwenden können auch berechnet Bedingung instaed Variable beispiels speichern kann.

void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
    // Item will be enabled only when text control has non-empty value
    event.Enabled(!m_SomeTextCtrl->GetValue().Trim().IsEmpty());
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top