Cita:
Empezado por escafandra
El caso es que el evento OnShow puede ejecutarse varias veces y OnCreate sólo una.
|
Así es, en el caso
auto-create forms, sólo ejecutaría el código una vez y no en las sucesivas llamadas a
Show ó
ShowModal (a eso me refería en el mensaje
#4).
Tal vez me estoy saltando algo (ya me dirás), pero no obtengo ninguna diferencia llamando directamente al evento
WM_CLOSE:
Código PHP:
void __fastcall TForm2::FormCreate(TObject *Sender)
{
ShowMessage(" UN MENSAJE ");
// PostMessage(Handle, WM_MYCLOSE, 0, 0);
PostMessage(Handle, WM_CLOSE, 0, 0);
}
Usando creación en demanda, también puede hacer:
Unit2.h:
Código PHP:
class TForm2 : public TForm
{
__published:
TQuery *Query1;
void __fastcall FormCreate(TObject *Sender);
private:
bool _displayed;
public:
__fastcall TForm2(TComponent* Owner);
__property bool itDisplayed = { read = _displayed, write = _displayed};
};
Unit2.cpp
Código PHP:
void __fastcall TForm2::FormCreate(TObject *Sender)
{
itDisplayed = true;
Query1->Close();
Query1->SQL->Text = "..."
try {
Query1->Open();
}catch(Exception *Exc) {
ShowMessage("Form2: "+ Exc->Message);
itDisplayed = false;
}
}
Llamada :
Código PHP:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2 = new TForm2(this);
if (Form2->itDisplayed)
Form2->ShowModal();
Form2->Free();
}
Saludos