القائمة المنبثقة الشيكات البند الراديو
-
08-07-2019 - |
سؤال
وأنا باستخدام القائمة المنبثقة مع wxTaskBarIcon على النوافذ (كويدغيتس-2.8.9). إذا كنت ملء القائمة المنبثقة باستخدام الأدوات الراديو، فإنها لا تغيير الدولة عند النقر عليها. ويتميز العنصر الأول في قائمة القائمة المنبثقة أثناء تحديده. ولكن اختيار أي عنصر آخر لا يغير هذا.
وحاليا لا يوجد أي بند انقر معالج الحدث (التطبيق هو أشبه النموذج UI). ينبغي لي يدويا تحديث حالة الاختيار عنصر في هذه معالج أو أنها لا تزال اجب الإطار؟
المحلول
ويجب عليك استخدام EVT_UPDATE_UI(yourCommandID, yourEventHandler)
لفحص / إلغاء وتمكين / تعطيل عناصر القائمة.
في الخاص بك معالج الحدث UpdateUI يجب تحديد الحالات عندما يتم تمكين البند الخاص بك
مثلا لديك زر راديو مع مجموعة الأوامر ID_RADIO_1 وID_RADIO_2 ويجب أن يتم التحقق اعتمادا على حالة bool m_SomeConditionVariable
ثم يجب إنشاء 2 معالجات الأحداث بالنسبة لهم مثل
void OnRadio1UpdateUI(wxUpdateUIEvent & event)
{
event.Checked(m_SomeConditionVariable == true);
}
void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
event.Checked(m_SomeConditionVariable == false);
}
و في هذه الحالة أول عنصر الإذاعة وسيتم فحص فقط عندما متغير غير صحيح وسيتم التحقق الثانية عندما المتغير هو الصحيح.
instaed حالةويمكنك استخدام حساب أيضا تخزين منها مثلا متغير.
void OnRadio2UpdateUI(wxUpdateUIEvent & event)
{
// Item will be enabled only when text control has non-empty value
event.Enabled(!m_SomeTextCtrl->GetValue().Trim().IsEmpty());
}