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

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

1 голос
/ 09 января 2009

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

4 голосов
/ 09 января 2009

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

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

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

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

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

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

2 голосов
/ 09 января 2009

Попробуйте

Self.Caption

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

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

1 голос
/ 09 января 2009

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

Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm1), &Form1);
1 голос
/ 09 января 2009

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

0 голосов
/ 09 января 2009

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

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

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

this->Caption="...";
...