Форма не обновляется

В моем приложении (основная форма - 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);

5 ответов

Решение

Спасибо вам всем за ваши ответы. Я нашел ошибку. В файле проекта было дважды создано создание формы:

Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm1), &Form1);

Вы уверены, что "это" на самом деле Form1?

if (this != Form1)
    ShowMessage("Whoops. Didn't expect that...");

Как твоя форма создается? Это в списке, если "autocreate" формы в настройках проекта, или вы вручную создаете его экземпляр?

Предполагая, что Form1 является вашей основной формой, она обычно создается кодом в вашем основном файле project.cpp в функции WinMain().

Application->CreateForm(__classid(TForm1), &Form1);

Это должно быть написано для вас автоматически C++Builder, так что будьте осторожны с изменением его вручную.

Пытаться

Self.Caption

если это работает, то Form1 не является экземпляром TForm1

Или отладить, чтобы увидеть тип

Вы уверены, что форма класса TForm1, с которой вы работаете, создается как Form1?

Я не думаю, что TForm1 знает, что вы звонили

TForm1 * Form1=new TForm1(...); 

некоторые были. Это ваша первая попытка в CBuilder? TForm1 * Form1, который вы видите сгенерированным в верхней части файла, является просто декларацией. Вы должны также создать это. Почему вам не нравится первое, рабочее решение? Нет необходимости использовать Form1 внутри класса. Или, если вы действительно должны тогда использовать

this->Caption="...";
Другие вопросы по тегам