Мое приложение имеет несколько модулей, каждый на одной вкладке на основной форме. При использовании диалога удобно вызвать ShowModal, потому что вы знаете, когда диалог завершен. Но для пользователя это не хорошо, поскольку он блокирует всю программу, пока диалог не закрывается.Поддельный модальный диалог с помощью Show?
Я хочу иметь локально модальный диалог. Таким образом, один модуль может открыть диалог, и он блокирует только текущий модуль. Пользователь все еще может переключиться на другой модуль и продолжить работу. Если пользователь вернется к первому модулю, диалог там ждет закрытия, прежде чем пользователь сможет продолжить работу в этом модуле.
Я должен создать для этого рамки, которые могут использовать все диалоги в приложении. У меня есть базовый знак для всех диалогов TAttracsForm, и я думаю, что здесь есть место, где можно добавить мой метод Show().
Это должно блокировать доступ ко всем wincontrols только в текущем модуле. Он должен имитировать вызов ShowModal(). Как я могу это достичь?
С уважением
Я понимаю, что есть некоторые свойства, которые необходимо добавить в диалоговом окне и модуле. Давайте забудем об этом на мгновение. Но основная проблема заключается в том, как я могу локально отключить все компоненты модуля, пока отображается диалог. Это плохое решение - просто перебирать их, потому что их так много. –
В зависимости от типа элемента управления, в котором содержатся элементы управления, вы должны просто отключить родителя. Например, если ваши компоненты все находятся на TTabSheet, отключение TTabSheet предотвращает доступ ко всем этим элементам управления. –
Просто появилась другая идея. Могу ли я просто установить для свойства Enabled значение False модуля (который наследуется от TForm), чтобы заблокировать все компоненты на нем? Быстрый тест кажется многообещающим :) –