Delphi. Как закрыть модальное окно программно?

Вопрос вроде бы простой, но стопорнулся на нём. В сети много примеров на эту тему, но перепробовав всё, я понял, что мне нужен свой вариант)))

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

Меня такой вариант явно не устраивал, и тогда я объявил одно свойство ReadyToClose и при присвоении ему значения True – таймер закрывает эту модальную форму. Так сказать диверсионно подрывная работа изнутри))

Зачем? В моём конкретном случае нужно было показывать анимацию во время копирования файлов и закрывать её, когда соответствующий поток закончит свою работу. Закрывать программно.

Итак, пусть у нас есть некая модальная форма….

3

 

Вот код её юнита…

Теперь в некоторой тестовой программе сделаем следующее

И всё прекрасно закрывается… Думаю, что есть ещё с десяток способов как это сделать. Но на мой взгляд – просто и элегантно.

Способ №2

Но честно, сказать, способ этот срабатывал не всегда, поэтому пришлось уйти от вызова модального окна и воспользоваться обычным, а блокировку элементов делать таким образом

Активация обратно

 

This entry was posted in Delphi. Bookmark the permalink.