Le formulaire n'est pas mis à jour
-
06-07-2019 - |
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);
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="...";