gpt4 book ai didi

c++ - VCL 显示不同的形式

转载 作者:行者123 更新时间:2023-11-28 03:31:14 26 4
gpt4 key购买 nike

我正在创建一个包含多个表单的 VCL 表单应用程序。我创建了一个名为 formCreateAppointment 的新表单。

我正在尝试通过 menuItem 中的这段代码加载表单:

formCreateAppointment.Show();

我收到这个错误:

E2451 undefined symbol 'formCreateAppointment'

我是否必须将此表单声明为“全局”对象或类似的东西?

谢谢

更多信息

“formCreateAppointment”表单位于“项目”->“选项”->“自动创建表单”下。当我使用代码时:

formCreateAppointment->Show();

我的代码无法编译,并且出现以下错误:

E2451 undefined symbol 'formCreateAppointment'

最佳答案

当您在 IDE 中创建一个新的 Form 类时,生成的 .hpp 文件包含一个全局指针给您,例如:

#ifndef Unit2H
#define Unit2H

#include <Classes.hpp>
//...

class TformCreateAppointment : public TForm
{
//...
};

extern PACKAGE TformCreateAppointment *formCreateAppointment; // <-- here

#endif

听起来您还没有#include将该 .hpp 文件添加到您的主代码中,例如:

#include "Unit2.hpp" // (or whatever you decided to name that Form's unit as)

如果您在项目选项中将该表单设置为自动创建,则该全局指针将在程序启动时为您自动实例化(通过插入对 Application->CreateForm() 的调用您项目的 WinMain() 函数)。否则,您必须在代码中使用 new 运算符手动实例化它。

无论哪种方式,变量都是指针。 VCL对象不能在栈上实例化,只能在堆上实例化。您必须使用 -> 运算符来访问 Form 对象的成员,例如:

formCreateAppointment->Show(); 

如果你想使用 . 运算符,那么你必须先取消引用指针:

(*formCreateAppointment).Show(); 

关于c++ - VCL 显示不同的形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12560352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com