Если вы посмотрите на исходный код TCustomForm.ShowModal (), вы увидите, что VCL не использует вызов Windows API для отображения модальных диалогов, но вместо этого отключает все другие формы в приложении, в то время как модальная форма показана. Конечно, вы можете попробовать то же самое, просто Показать () диалоговое окно формы-моды, затем отключить родительский элемент, а затем снова включить его после закрытия диалогового окна формы-режима. Там должно быть центральное место, где вы будете отслеживать формально-модальные диалоги, формы, которые необходимо повторно включить и так далее. Однако вам следует тщательно проверить, действительно ли код выполняет то, что вам нужно, даже при переключении между приложениями, при минимизации приложения и т. Д.
Сказав это, я не думаю, что это хорошая идея. Это нарушает все предположения пользователя Windows относительно поведения приложений. В отличие от Mac OS X, в Windows нет различий между диалоговыми окнами приложений и модальностей, и вам следует придерживаться поведения, совместимого с платформой, для которой вы программируете.
Скорее всего, есть лучший способ структурировать ваш интерфейс. Взгляните на соответствующую страницу для диалоговых окон в «Руководстве по взаимодействию с пользователем». Модальные диалоги лучше избегать, насколько это возможно, связанные рекомендации показывают лучшие альтернативы для многих вариантов использования. Если вы ограничиваете использование модальных диалогов, возможно, вам больше не нужны формально-модальные диалоги.