Вопрос
В моем приложении (основной формой является 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".
}
Что может быть причиной этой проблемы?
Отредактированный: Спасибо вам всем за ваши ответы.Я нашел ошибку.В файле проекта дважды создавалась форма:
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm1), &Form1);
Решение 4
Спасибо вам всем за ваши ответы.Я нашел ошибку.В файле проекта дважды создавалась форма:
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, поэтому будьте осторожны, изменяя его вручную.
Попробуй
Подпись к снимку
если это работает, то Form1 не является экземпляром TForm1
Или отладьте его, чтобы увидеть тип
Вы уверены, что форма класса TForm1, с которой вы работаете, создана как Form1?
Я не думаю, что TForm1 знает, что вы звонили
TForm1 * Form1=new TForm1(...);
где-то был.Это ваша первая попытка в CBuilder?TForm1 * Form1, который вы видите сгенерированным в верхней части файла, является просто объявлением.вы также должны создать его.Почему вам не нравится первое, работающее, решение?Нет необходимости использовать Form1 внутри класса.Или, если вам действительно нужно, используйте
this->Caption="...";