Вопрос: необходимо в коде программы определить, по нажатию на какую кнопку (OK или CANCEL) был закрыт диалог Numpad или Keypad.
Это требуется, например, чтобы при вводе нового значения (с помощью нажатия на кнопку OK) однократно произвести его валидацию.
Каким образом это можно сделать?
Ответ: для диалогов библиотеки OwenVisuDialogs (NumpadOwen, NumpadOwenBig, KeypadOwen, KeypadOwenBig) начиная с версии 3.5.14.3 добавлена возможность получения информации о результате закрытия диалогов.
Для этого используется переменная g_stClosedDialogInfo из списка глобальных переменных DialogsSettings.
Переменная является структурой типа OwenDialogClosingInfo и включает следующие поля, содержащие информацию о последнем закрытом диалоге:
2021-06-02_9-54-16.png
- xIsDialogClosed (BOOL) - флаг закрытия диалога. Принимает значение TRUE при закрытии любого из упомянутых выше диалогов.
Сбрасывается в FALSE автоматически при открытии любого из упомянутых диалогов или вручную из программы пользователя.- wsDialogTitle (WSTRING) - заголовок закрытого диалога
- eDialogType (перечисление OwenDialog_TYPE) - тип закрытого диалога (NUMPAD или KEYPAD)
- eDialogClosingResult (перечисление OwenDialogClosed_RESULT) - результат закрытия диалога (т.е. кнопка диалога, по нажатию на которую он был закрыт - OK или CANCEL)
Библиотека и пример использования доступны по ссылке:
https://owen.ru/forum/showthread.php...l=1#post348262
См. также другой пример, в котором демонстрируется более сложный, но универсальный вариант получения результата закрытия любого диалога.




