На самом деле поведение, которое вы описываете, определяет окно владелец .Обратите внимание, что я использую терминологию Windows, а не терминологию VCL.В терминах Windows значение owner отличается от значения VCL.
MSDN говорит о владении окном:
Перекрывающееся или всплывающее окно может принадлежать другому перекрывающемуся или всплывающему окну.Принадлежность к наложению накладывает несколько ограничений на окно.
- Собственное окно всегда находится над своим владельцем в z-порядке.
- Система автоматически уничтожает собственное окно, когда его владелец уничтожается.
- Окно, находящееся в собственности, скрыто, когда его владелец свернут.
Таким образом, вы хотите иметь возможность контролировать владельцев форм, а не основную форму,VCL позволяет вам указать, какая форма является владельцем любой другой формы.
Чтобы контролировать владельца формы VCL, вам необходимо использовать PopupMode
и * 1030.*PopupParent
properties.
MySecondaryForm.PopupMode := pmExplicit;
MySecondaryForm.PopupParent := MyOtherSecondaryForm;
В данный момент ваш код, вероятно, использует значение по умолчанию PopupMode
из pmAuto
.В этом режиме активная форма используется как владелец формы, и это обычно означает, что основная форма является конечным владельцем всех вторичных форм.