PDA

Ver la Versión Completa : Problemas conn el orden en que se muestran las pantallas


melanthea
30-06-2004, 16:38:39
Hola a todos
Sé que el titulo del mensaje no es muy explicativo, pero no se me ocurría ninguna forma de expresarlo resumidamente.
El caso es que tengo una aplicación hecha con marcos (no creo que sea muy relevante para la pregunta, pero por si acaso...), y quiero establecer un control de acceso a la misma. El caso es que ya tengo la aplicación hecha, y evidentemente al ejecutarla me sale la pantalla principal de la misma.
Lo que necesito hacer ahora es mostrar antes de esa panntalla principal, una pantalla de splash y otra donde establezco el control de acceso a la aplicación,para que luego pase ya a la principal.
Si añado sencillamente al proyecto los formularios necesarios para el control de acceso, hay alguna manera de determinar la pantalla que quiero que se muestre primero? Es decir, yo quiero que primero me salga la splash, luego la de control de acceso y luego la principal, que es la primera que se muestra actualmente.
Muchisimas gracias por vuestra ayuda, espero que me podais contestar porque es un tema imprescindible para el correcto funcionamiento de la aplicación.
Saludos

roman
30-06-2004, 16:54:53
Debes crear y mostrar el splash y la forma de acceso en el archivo dpr del proyecto manualmente:


FormaSplash := TFormaSplash.Create(nil);
FormaSplash.ShowModal;
FormaSplash.Free;

FormaAcceso := TFormaAcceso.Create(nil);
Ok := (FormaAcceso.ShowModal = mrOk);
FormaAcceso.Free;

if Ok then
begin
Application.CreateForm(TFormaPrincipal, FormaPrincipal);
Application.Run;
end;


Lo importante a notar aquí son tres cosas:

1. Las formas Splash y de Acceso no las debes crear con Application.CreateForm o de lo contrario Delphi pensará que son la forma principal y terminará la ejecución cuando las cierres.

2. La forma principal y Application.Run deben ejecutarse sólo si la ventana de acceso determina que los datos son correctos, de otra forma simplemente se termina la ejecución.

3. Si la forma de acceso requiere acceso a alguna base de datos para la autenticación del usuario y tienes tus tablas en un DataModule debes dejar que éste se cree antes.

Por otra parte ambos temas (splash y acceso) se han tratado varias veces de manera que puedes hacer una búsqueda pra encontrar oras ideas.

Una cosa más: La forma splash debe tener algún Timer para cerrarse luego de un tiempo y poder dar paso a lo siguiente.

// Saludos

barman
01-07-2004, 10:25:49
En c++ quedaria asin.

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
TSplas *a = new TSplas(NULL);
a ->Show();
a ->Update();
Application->Initialize();
a ->Inicializa();
Application->CreateForm(__classid(.................
....................................................................
.....
a ->Free();
Application->Run();
}


Para el orden en que quieres que se te muestre prueba con
Opciones de proyecto en la lista Auto-Create froms.

roman
01-07-2004, 17:04:19
Gracias por la aclaración barman, no me había percatado de que el hilo estaba en el foro de C++.

// Saludos