У меня есть приложение с MainForm, которое является экраном загрузки.
Не делайте этого. В VCL MainForm
нельзя изменить после его установки, и приложение закроется, когда MainForm
будет закрыто. MainForm
устанавливается при первом вызове на Application->CreateForm()
. Если вы хотите создать Формы до создания MainForm
, вы должны использовать вместо этого оператор new
, например:
Application->Initialize();
TLoadingForm *LoadingForm = new TLoadingForm(Application);
LoadingForm->Show();
LoadingForm->Update();
...
Application->CreateForm(__classid(TForm1), &Form1);
...
LoadingForm->Close();
delete LoadingForm;
Application->Run();
...
Если вы хотите принять решение о том, какой TForm
будет реальным MainForm
во время выполнения вы можете сделать это, например:
Application->Initialize();
TLoadingForm *LoadingForm = new TLoadingForm(Application);
LoadingForm->Show();
LoadingForm->Update();
...
if (someCondition)
Application->CreateForm(__classid(TForm1), &Form1);
else
Application->CreateForm(__classid(TForm2), &Form2);
...
LoadingForm->Close();
delete LoadingForm;
Application->Run();
...
Имейте в виду, что IDE "владеет" основным исходным файлом проекта и, скорее всего, сможет изменить / удалить / повредить ваш пользовательский код в какой-то момент в течение срока разработки вашего проекта. Поэтому будьте очень осторожны , используя собственный код, который вы размещаете между вызовами Application->Initialize()
и Application->Run()
. И убедитесь, что у вас есть хорошие резервные копии.