menu pop-up de itens de rádio cheques
-
08-07-2019 - |
Pergunta
Eu estou usando um menu com wxTaskBarIcon no Windows (wxWidgets-2.8.9). Se eu preencher menu com itens de rádio, eles não mudam de estado quando clicado. Primeiro item na lista do menu pop-up é marcado como selecionado. Mas selecionando qualquer outro item não muda isso.
Atualmente não há nenhuma manipulador de eventos item de clique (aplicação é mais como protótipo UI). Devo atualizar manualmente o status de seleção do item neste manipulador ou ainda é dever quadro?
Solução
Você deve usar EVT_UPDATE_UI(yourCommandID, yourEventHandler)
para verificação / desmarcando e ativar / desativar itens do menu.
Em seu manipulador de eventos updateUI você deve especificar os casos em que o item é habilitado
Por exemplo. você tem grupo radiobutton com comandos ID_RADIO_1 e ID_RADIO_2 e eles devem ser verificados dependendo da condição bool m_SomeConditionVariable
então você deve criar 2 manipuladores de eventos para eles como
void OnRadio1UpdateUI(wxUpdateUIEvent & event)
{
event.Checked(m_SomeConditionVariable == true);
}
void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
event.Checked(m_SomeConditionVariable == false);
}
e neste primeiro item de rádio caso será verificado apenas quando a variável é falsa e segundo será verificada quando variável é verdadeira.
Você pode usar condição também calculado instaed de armazenar variável por exemplo.
void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
// Item will be enabled only when text control has non-empty value
event.Enabled(!m_SomeTextCtrl->GetValue().Trim().IsEmpty());
}