[在C ++ Builder中启动时从加载屏幕打开表单

问题描述 投票:-2回答:1

我有一个带有MainForm的应用程序,它是一个加载屏幕。当在后台完成某些工作时(例如确定下一个要启动的表单),将显示此表单。我无法使它正常工作,我一直遇到访问冲突错误。

我知道为什么要感谢这个主题:Open two forms at startup in c++ builder。但是建议的解决方案对我来说是不可接受的,因为我在设计时不知道将首先显示哪种表格。

正确的方法是什么?

c++ c++builder vcl
1个回答
0
投票

我有一个带有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()调用之间放置的自定义代码非常小心。并确保备份良好。

© www.soinside.com 2019 - 2024. All rights reserved.