题
在我的应用程序中(主窗体是TTntForm,C ++ Builder 2006):
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Caption=L"1st caption"; // This works.
Form1->Caption=L"2nd caption"; // But this doesn't work,
// Caption of the form remains "1st caption".
}
这个问题的原因可能是什么?
<强>编辑:强> 谢谢大家的答案。我发现了这个bug。项目文件中有两次表单创建:
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm1), &Form1);
解决方案 4
谢谢大家的回答。我发现了这个bug。项目文件中有两次表单创建:
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm1), &Form1);
其他提示
你确定“这个”吗?实际上是Form1?
if (this != Form1)
ShowMessage("Whoops. Didn't expect that...");
您的表单是如何创建的?如果“自动创建”,它是否在列表中?项目选项中的表单,还是您手动创建它的实例?
假设Form1是您的主要表单,它通常由主project.cpp文件中的代码创建,函数WinMain()。
Application->CreateForm(__classid(TForm1), &Form1);
这应该由C ++ Builder自动编写,因此要小心手动更改它。
尝试
Self.Caption
如果这样做,则Form1不是&#180; t TForm1的实例
或调试它以查看类型
您确定要使用的TForm1类表单是否已实例化为Form1?
我不认为TForm1知道你已经打电话了
TForm1 * Form1=new TForm1(...);
somewere。这是你在CBuilder的第一次尝试吗?你看到在文件顶部生成的TForm1 * Form1只是声明。你还必须创建它。 你为什么不喜欢第一个有效的解决方案?没有必要在类中使用Form1。或者,如果你真的必须使用
this->Caption="...";
不隶属于 StackOverflow