Question

Dans mon application (le formulaire principal est 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".
}

Quelle pourrait être la cause de ce problème?

Modifié: Merci à tous pour vos réponses. J'ai trouvé le bug. Un double formulaire a été créé dans le fichier de projet:

Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm1), &Form1);
Était-ce utile?

La solution 4

Merci à tous pour vos réponses. J'ai trouvé le bug. Un double formulaire a été créé dans le fichier de projet:

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

Autres conseils

Êtes-vous sûr que " this " est en réalité Form1?

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

Comment votre formulaire est-il créé? Est-il dans la liste si " création automatique " formulaires dans les options du projet ou en créez-vous une instance manuellement?

En supposant que Form1 est votre formulaire principal, il est normalement créé par le code de votre fichier project.cpp principal, dans la fonction WinMain ().

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

Ceci devrait être écrit automatiquement pour vous par C ++ Builder. Méfiez-vous donc de le modifier manuellement.

Essayez

Self.Caption

si cela fonctionne, Form1 n'est pas une instance de TForm1

Ou le déboguer pour voir le type

Êtes-vous sûr que le formulaire de classe TForm1 que vous utilisez est instancié en tant que Form1?

Je ne pense pas que TForm1 sache que vous avez appelé

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

quelque part. Est-ce votre première tentative dans CBuilder? TForm1 * Form1 que vous voyez généré en haut du fichier n'est qu'une déclaration. vous devez aussi le créer. Pourquoi n'aimez-vous pas la première solution qui fonctionne? Il n'est pas nécessaire d'utiliser Form1 dans la classe. Ou si vous devez vraiment utiliser

this->Caption="...";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top