Frage

In meiner Anwendung (Hauptformular ist 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".
}

Was könnte die Ursache für dieses Problem sein?

Bearbeitet:Vielen Dank für Ihre Antworten. Ich fand den Fehler. In der Projektdatei gab es eine zweimalige Erstellung von Form:

Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm1), &Form1);
War es hilfreich?

Lösung 4

Vielen Dank für Ihre Antworten. Ich fand den Fehler. In der Projektdatei gab es eine zweimalige Erstellung von Form:

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

Andere Tipps

Sind Sie sicher, dass "dies" tatsächlich Form1 ist?

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

Wie wird Ihre Form erstellt? Ist es in der Liste, wenn "autocreate" in den Projektoptionen Formulare oder manuell eine Instanz davon erstellen?

Angenommen, Form1 ist Ihr Hauptformular, das normalerweise nach Code in Ihrem Hauptprojekt.cpp -Datei in Funktion winmain () erstellt wird.

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

Dies sollte von C ++ Builder automatisch für Sie geschrieben werden. Seien Sie also vorsichtig, wenn Sie es manuell ändern.

Versuchen

Self.caption

Wenn dies funktioniert, dann ist Form1 isn´ta Instance von tform1

Oder debuggen Sie es, um den Typ zu sehen

Sind Sie sicher, dass die Form1 -Klasse -Form, mit der Sie arbeiten, als Form1 instanziiert ist?

Ich glaube nicht, dass tform1 weiß, dass Sie angerufen haben

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

irgendwo. Ist dies Ihr erster Versuch im CBuilder? TForm1 * Form1, das Sie oben in der Datei generiert sehen, ist nur eine Deklaration. Sie müssen es auch erstellen. Warum magst du nicht die erste, Arbeit, Lösung? In der Klasse müssen Form1 nicht verwendet werden. Oder wenn Sie wirklich verwenden müssen, dann verwenden Sie

this->Caption="...";
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top