質問

私のアプリケーション(メインフォームは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".
}

この問題の原因は何ですか?

編集済み: 回答ありがとうございます。バグを見つけました。プロジェクトファイルに2回フォームが作成されました:

Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm1), &Form1);
役に立ちましたか?

解決 4

ご回答いただきありがとうございます。バグを見つけました。プロジェクトファイルに2回フォームが作成されました:

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はTForm1のインスタンスではありません

またはデバッグしてタイプを表示

作業しているTForm1クラスフォームがForm1としてインスタンス化されていますか?

TForm1があなたが電話したことを知っているとは思わない

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

いくらか。これはCBuilderでの最初の試みですか? TForm1 *ファイルの上部に生成されたForm1は、単なる宣言です。作成する必要もあります。 最初の実用的なソリューションが気に入らないのはなぜですか?クラス内でForm1を使用する必要はありません。または、本当に使用する必要がある場合は

this->Caption="...";
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top