Шаблон для обновления состояния пользовательского интерфейса без запуска события - PullRequest
1 голос
/ 24 ноября 2010

Большинство приложений с графическим интерфейсом имеют несколько параметров автообработки, например, окно редактирования запускает автозаполнение, значки списка изменений и описание продукта, радио-кнопка запускает обновления текста и т. Д.

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

Есть ли образец того, как вы этого добиваетесь? Я предполагаю, что возможно добавить переменную «m_bDisablEventTrigger» в каждый из элементов управления и установить ее до и после обновления пользовательского интерфейса, но, возможно, есть более хороший способ добиться того же с помощью менее уродливого кода.

Ответы [ 3 ]

1 голос
/ 24 ноября 2010

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

GetDlgItem (IDC_YOURCONTROL) -> EnableWindow (false);

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

0 голосов
/ 24 ноября 2010

Я делаю это в моем приложении Delphi. Случается так, что всякий раз, когда вносится изменение, которое может повлиять на состояние элемента управления, на этот счет публикуется сообщение. Это сообщение будет обработано, когда приложение станет бездействующим, то есть после того, как все существующие сообщения завершат свою обработку.

Обработка этого сообщения затем устанавливает состояние пользовательского интерфейса для всех элементов управления, и задания выполняются. Конечно, в Delphi все очень просто, потому что VCL очень удобно оборачивает базовый Win32 API.

0 голосов
/ 24 ноября 2010

ИМХО, невозможно ответить на такой вопрос, не углубляясь в конкретные детали реализации.Очевидно, что такие модели существуют.Наличие флагов «master» или «per-control», которые блокируют некоторое «автоматическое» поведение, определяется исключительно структурой, используемой для этих «автоматических» корректировок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...