Обработка клавиатуры навигации в nsDialogs

Я использую nsDialogs для создания пользовательской страницы в установщике моего приложения, где пользователи могут выбирать между стандартной и переносной установкой.

Для этого я создаю два переключателя NSD_CreateRadioButton так что пользователи могут выбирать между двумя режимами установки.

После получения отзывов от слепых пользователей, я хотел бы добавить возможность навигации по клавиатуре между этими двумя переключателями. Пока нажатие клавиши Tab позволяет перейти непосредственно к следующей кнопке в нижней панели навигации, а не к. Стрелка вверх / Стрелка вниз не имеет никакого эффекта.

Как я могу добавить эту возможность для навигации с помощью клавиатуры nsDialogs?

2 ответа

Решение

Если вы используете ${NSD_Create*} макросы в nsDialogs.nsh, тогда стиль WS_TABSTOP будет установлен для кнопок управления, и вы можете вкладывать их. Тем не менее, порядок вкладок: нижние кнопки перед кнопками в вашем диалоге.

Назначьте ключ доступа, чтобы позволить пользователю получить доступ к элементу управления напрямую. Вы делаете это, добавляя амперсанд (&) к текстовой метке перед определенным символом:

${NSD_CreateRadioButton} 0 13u 100% 15u "Click &Me" ; Activate by pressing Alt+M
Pop $0
${NSD_CreateRadioButton} 0 30u 100% 15u "&Or Me"
Pop $0

Клавиши со стрелками также должны работать, когда одна из переключателей имеет фокус. Стиль WS_GROUP также играет роль в навигации по клавиатуре, если у вас есть несколько групп несвязанных переключателей.

Я нашел решение этой проблемы, экспериментируя с предложениями @Anders.

Между двумя звонками NSD_CreateRadioButton У меня был еще один звонок NSD_CreateLabel что явно перепутало группировку между двумя переключателями.

Когда я создаю переключатели двумя последующими вызовами NSD_CreateRadioButton а затем добавить описывающие надписи, работает навигация через стрелку вверх и стрелка вниз. Если есть другой звонок NSD_Create* между ними это нарушает группировку.

Другие вопросы по тегам