Теперь, по крайней мере, с 300 вариантами созданных вручную форм, которые я создал за последние 5 лет, я никогда не сталкивался с этой проблемой.У меня есть, конечно, основная форма, а затем куча более мелких дочерних форм.Эти дочерние формы не создаются автоматически, они объявлены и созданы вручную в моем коде.Этот проект все еще очень преждевременен, а это значит, что в этом проекте не так много кода, что я могу что-то упустить.Но проблема в том, что все, что я делаю, это создаю форму, присваиваю родительский элемент основной форме, и без кода для ее отображения, он все равно показывает себя.
FControlPanel:= TfrmControlPanel.Create(nil);
FControlPanel.Parent:= Self;
Вот и весь код, который ядолжен создать это.Абсолютно нет кода в фактической дочерней форме вообще.Для того, чтобы он был видимым, должно пройти не менее FControlPanel.Show
, но по какой-то причине он все равно виден.
У меня есть догадка, с чего могло начаться это поведение.Но я не могу соединить два и два.Я попытался использовать возможности форм MDI, чтобы сохранить формы в основной форме.Но после ряда сценариев проб и ошибок я сдался и вернул свои свойства обратно.Единственными свойствами, которые я изменил, был FormStyle - основная форма, которую я переключил (для испытаний) между fsMDIForm, fsNormal и fsStayOnTop.В дочерних формах я переключил их на fsMDIChild.После того, как я сдался, я переключил их все на их значение по умолчанию, fsNormal.Именно после этой игры началось это "автосалон".
Также, вероятно, важное замечание, эти дочерние формы наследуются от главной формы.Эта мастер-форма практически не имеет кода, по крайней мере, нет кода, который мог бы ее показать.Нигде в моем коде я не показываю эти дочерние формы, но это так или иначе.И я знаю, что они не создаются автоматически.
Что я мог сделать не так?
PS - Проблемы с реализацией MDI в целом - вопрос другой, я не задаюо MDI, но это может быть причиной того, что это происходит, поскольку изменение свойств компонентов, как известно, постоянно переключает внутренние свойства компонента, например, на TPanel, переключение «ParentBackground» на true, а затем обратно на false снова заставляет его работать должным образомпоказать указанный цвет при использовании XPMan.