c++ - 无法将辅助表单显示为 MainForm
问题描述
所以我对 C++ Builder 有这个问题。我有一个包含两个简单表格的项目,仅此而已。
这导致以下生成的代码:
#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
USEFORM("testUnit1.cpp", Form1);
USEFORM("bluewin.cpp", Form2);
//---------------------------------------------------------------------------
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
try
{
Application->Initialize();
Application->MainFormOnTaskBar = true;
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
据我所知,第一个创建的表单(Form1)被指定为 MainForm 并在执行时显示。这有效,仅显示 Form1。
现在我想显示第二个表单(Form2),只有这个。我读到颠倒两行:
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
获得
Application->CreateForm(__classid(TForm2), &Form2);
Application->CreateForm(__classid(TForm1), &Form1);
应该做的伎俩,但它没有。实际上两种形式都会显示。我尝试通过转到 Project > Options > Forms 将 MainForm 设置为 Form2,但我得到了相同的结果。
知道为什么会出现这种行为吗?
解决方案
MainForm 是第一个在运行时TForm
实例化的。Application->CreateForm()
在项目选项中设置 MainForm 只会更改CreateForm()
代码中调用的顺序。所以交换电话是正确的解决方案。
如果 Form2 是 MainForm 时 Form1 仍然显示,那是因为您Visible
在设计时将 Form1 的属性设置为 true。改为将其设置为 false。然后你可以打电话Form1->Show()
或Form1->ShowModal()
在你真正准备好展示它的时候。
当在 IDE 中创建非 MainFormTForm
并将其添加到项目中时,它被设置为Visible=false
初始。
推荐阅读
- python - 在python中赋值之前引用的错误
- javascript - 如何检查我的 JSON 字段是否已定义?
- java - 如果有很多二级字段,如何解析嵌套的 json 文件?
- android - 将密钥文件放入 APK
- python - PermissionError 试图从 MacOS 上的 Python 访问桌面(shutil 或 os.chdir())
- php - 在 PHP 中从 XML 数据生成图像
- websocket - 用于聊天应用的 GRPC 流式传输或 WebSockets
- python - 遍历 XML 并选择特定的元素树内容
- java - 帐户设置适配器问题
- influxdb - 使用 Flux 查询时,不同的保留策略 (RP) 是否表现得像表?