Ver Mensaje Individual
  #6  
Antiguo 15-10-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Algo parecido a la solución de ecfisa es lo que hago yo, pero no en el evento OnShow, pues puede darse mas veces si ocultamos y mostramos el Form.

Yo lo hago en el WinMain:

Código:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   try
   {
       Application->Initialize();

       TLogin *Log = new TLogin(0);
       if(Log->ShowModal() == mrOk)
          Application->CreateForm(__classid(TForm1), &Form1);
       delete Log;
       Application->Run();
   }
   catch (Exception &exception)
   {
       Application->ShowException(&exception);
   }
   return 0;
}
Una solución a la propuesta de hacerlo en el OnShow es colo car una bandera estática:
Código:
void __fastcall TfrMain::FormShow(TObject *Sender)
{
   static bool Primera_vez = true;
   if(Primera_vez){
      frLogin = new TfrLogin(this);
      int ExitResult = frLogin->ShowModal();
      delete frLogin;
      if (ExitResult == mrCancel)  
        Application->Terminate();
      Primera_vez = false;  
   }
}
Aún así, prefiero la primera técnica pues de esa manera nunca se crea el formulario principal.

Saludos.
Responder Con Cita