【问题标题】:Unable to display secondary Form as a MainForm无法将辅助表单显示为 MainForm
【发布时间】:2020-02-27 16:19:50
【问题描述】:

所以我对 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,但我得到了相同的结果。

知道为什么会出现这种行为吗?

【问题讨论】:

    标签: c++ c++builder


    【解决方案1】:

    MainForm 是在运行时用Application-&gt;CreateForm() 实例化的第一个TForm。在项目选项中设置 MainForm 只会更改代码中 CreateForm() 调用的顺序。所以交换调用是正确的解决方案。

    如果 Form2 是 MainForm 时仍显示 Form1,那是因为您在设计时将 Form1 的 Visible 属性设置为 true。改为将其设置为 false。然后,只要您真正准备好显示它,就可以致电Form1-&gt;Show()Form1-&gt;ShowModal()

    在 IDE 中创建非 MainForm TForm 并添加到项目中时,初始设置为 Visible=false

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-04
      • 2023-03-31
      • 1970-01-01
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多