Могу ли я изменить «основную форму» в приложении Delphi 6 во время выполнения? - PullRequest
3 голосов
/ 03 февраля 2012

У меня есть приложение Delphi 6 с несколькими формами. Одна важная характеристика формы, выбранной в параметрах компилятора в качестве основной формы, заключается в том, что при ее свертывании все другие формы (окна) в приложении минимизируются, и наоборот, при его восстановлении восстанавливаются все остальные видимые формы. .

Я хотел бы переключить эту черту основной формы на другую форму приложения во время выполнения, чтобы она действовала как основная форма в этом смысле (минимизация / восстановление лидерства). Существует ли метод Delphi или вызов API Windows, который позволит мне это сделать? Если нет, есть ли способ заставить вторичную форму эмулировать это поведение, которое не вызовет больше проблем, чем оно того стоит?

1 Ответ

2 голосов
/ 03 февраля 2012

На самом деле поведение, которое вы описываете, определяет окно владелец .Обратите внимание, что я использую терминологию Windows, а не терминологию VCL.В терминах Windows значение owner отличается от значения VCL.

MSDN говорит о владении окном:

Перекрывающееся или всплывающее окно может принадлежать другому перекрывающемуся или всплывающему окну.Принадлежность к наложению накладывает несколько ограничений на окно.

  • Собственное окно всегда находится над своим владельцем в z-порядке.
  • Система автоматически уничтожает собственное окно, когда его владелец уничтожается.
  • Окно, находящееся в собственности, скрыто, когда его владелец свернут.

Таким образом, вы хотите иметь возможность контролировать владельцев форм, а не основную форму,VCL позволяет вам указать, какая форма является владельцем любой другой формы.

Чтобы контролировать владельца формы VCL, вам необходимо использовать PopupMode и * 1030.*PopupParent properties.

MySecondaryForm.PopupMode := pmExplicit;
MySecondaryForm.PopupParent := MyOtherSecondaryForm;

В данный момент ваш код, вероятно, использует значение по умолчанию PopupMode из pmAuto.В этом режиме активная форма используется как владелец формы, и это обычно означает, что основная форма является конечным владельцем всех вторичных форм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...