Domanda

Nella mia domanda (il modulo principale è 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".
}

Quale potrebbe essere la causa di questo problema?

Modificato: Grazie a tutti per le risposte. Ho trovato il bug. C'è stata una creazione di due moduli nel file di progetto:

Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm1), &Form1);
È stato utile?

Soluzione 4

Grazie a tutti per le risposte. Ho trovato il bug. C'è stata una creazione di due moduli nel file di progetto:

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

Altri suggerimenti

Sei sicuro che " questo " è in realtà Form1?

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

Come viene creato il tuo modulo? È nell'elenco se " autocreate " moduli nelle opzioni del progetto o stai creando manualmente un'istanza di esso?

Supponendo che Form1 sia il tuo modulo principale, normalmente viene creato dal codice nel tuo file project.cpp principale, nella funzione WinMain ().

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

Questo dovrebbe essere scritto automaticamente per te da C ++ Builder, quindi fai attenzione a cambiarlo manualmente.

Prova

Self.Caption

se funziona, Form1 non è un'istanza di TForm1

O esegui il debug per vedere il tipo

Sei sicuro che il modulo di classe TForm1 con cui stai lavorando sia istanziato come Form1?

Non credo che TForm1 sappia che hai chiamato

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

somewere. Questo è il tuo primo tentativo in CBuilder? TForm1 * Form1 che vedi generato nella parte superiore del file è solo una dichiarazione. devi anche crearlo. Perché non ti piace la prima soluzione funzionante? Non è necessario utilizzare Form1 all'interno della classe. O se devi davvero usare

this->Caption="...";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top