Pregunta

En mi aplicación (el formulario principal es 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".
}

¿Cuál podría ser la causa de este problema?

Editado: Gracias a todos por sus respuestas o comentarios. Encontré el error. Hubo una creación de dos veces en el archivo del proyecto:

Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm1), &Form1);
¿Fue útil?

Solución 4

Gracias a todos por sus respuestas. Encontré el error. Hubo una creación de dos veces en el archivo del proyecto:

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

Otros consejos

¿Está seguro de que " esto " es en realidad Form1?

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

¿Cómo se está creando su formulario? ¿Está en la lista si " autocreate " formularios en las opciones del proyecto, o ¿está creando manualmente una instancia del mismo?

Suponiendo que Form1 es su formulario principal, normalmente se crea mediante código en su archivo project.cpp principal, en la función WinMain ().

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

C ++ Builder debe escribir esto automáticamente para usted, así que tenga cuidado de cambiarlo manualmente.

Probar

Self.Caption

si esto funciona, entonces Form1 no es una instancia de TForm1

O depúrelo para ver el tipo

¿Está seguro de que el formulario de clase TForm1 con el que está trabajando se instancia como Form1?

No creo que TForm1 sepa que has llamado

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

alguna vez. ¿Es este tu primer intento en CBuilder? TForm1 * Form1 que ves generado en la parte superior del archivo es solo una declaración. También debes crearlo. ¿Por qué no te gusta la primera solución funcional? No hay necesidad de usar Form1 dentro de la clase. O si realmente debes usar

this->Caption="...";
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top