2016-02-02 2 views
0

Я пытаюсь создать простую тестовую программу в Gtkada, чтобы открыть диалоговое окно, оставив определенное текстовое поле. Я справился с этой частью, но у меня проблемы с возвратом фокуса обратно в исходное текстовое поле, когда нажата кнопка «ОК» Dialog. Общая идея заключается в том, что пользователь вводит что-то в текстовое поле, и когда они нажимают/выходят из окна (фокусное событие), выполняется некоторая простая буквенно-цифровая проверка. Если проверка не выполняется, пользователь предупреждается с помощью диалога, и фокус возвращается в текстовое поле, в которое они вводили ошибочные данные. Все, что я делаю, - это простой пример того, как установить фокус обратно в текстовое поле, когда вы закрываете диалоговое окно, которое вызывается изначально вызванного текстового поля. В Gtkada ... Я использую версию 2.2 Gtkada. Я не могу изменить версию Gtkada или использовать другую программу или язык! Очень важно!Настройка виджета Фокус в Gtkada

Тим

+0

Опубликовать простейший возможный код, показывающий эту проблему здесь ... –

+0

С тех пор была встреча, и было решено, что мы собираемся выполнить проверку целостности проверки нажатием кнопки. Не требуется смещение/настройка фокусировки. Благодаря! –

ответ

1

Самое элегантное решение, графический интерфейс-накрест, чтобы сделать проверку на leave_event на каждом поле ввода, и если это не удается отобразить сообщение об ошибке (красным цветом или некоторые такие) рядом с полем , Но не отображать диалоговое окно или не сфокусировать внимание на определенном поле, которое будет мешать тому, что пользователь пытается сделать (представьте: я вводил неправильный адрес электронной почты, нажимаю вкладку, получаю диалог, который я не читаю (например, большинство пользователи), начните вводить мое имя для следующего поля, но поскольку фокус вернулся к адресу электронной почты, у меня нет переопределенного и потерянного моего предыдущего ввода).

Если вы все еще хотите захватить фокус, Gtk.Widget.Grab_Focus - это процедура, которую вы хотите.

+0

Спасибо за ответ. Я, к сожалению, приходил к большинству этих выводов, но я весьма ограничен тем, что я могу произвести на 30-летних формах. Ребята, которые собираются использовать эту панель Simulator, ожидают определенной корреляции между тем, что я делаю, и предыдущими панелями Sim. Я полагаю, что теперь мы собираемся выполнить проверку всех нажатий кнопки «Отправить» и «Диалоговое окно» с сообщением пользователю о том, какие поля ошибочны. Никакое изменение фокуса не будет происходить, так что не будет зависеть от того, где пользователи ожидают, что будет курсор. еще раз спасибо –

Смежные вопросы