PDA

Ver la Versión Completa : Iniciar aplicación con ventana no principal


adebonis
13-09-2007, 17:35:49
Hola a todos.

Tengo una aplicación que se inicia con la ventana principal escondida (Application.ShowMainForm := False) y con un componente TrayIcon que muestra el icono en el syste tray (donde está el reloj).

Bien, lo que quiero es que al iniciar la aplicación se muestre automáticamente otra ventana de la apalicación. No he encontrado ningún evento que lo haga.

¿Alguna idea?

Gracias
Adolfo Bonis
Barcelona

dec
13-09-2007, 17:40:17
Hola,

Puedes mostrar el segundo formulario cuando se crea (evento "OnCreate") el formulario principal, o puedes hacer que el segundo formulario sea el formulario principal. Para hacer esto último basta conque sea el primero que se cree en el archivo "DPR." Pero, probablemente te interesará lo primero. No sé.

pborges36
13-09-2007, 17:41:24
Por lo que entiendo necesitas algo parecido a un splash, por lo menos en comportamiento. Yo uso algo asi:



Application.Initialize;
Application.Title := 'Mi Programa';
Application.CreateForm(TPrincipal, Principal);
Application.CreateForm(TSplash, Splash);
Splash.ShowModal;
Splash.Free;
Application.Run;


Espero te sirva. Saludos.

adebonis
13-09-2007, 18:04:59
Hola.

Ya estoy utilizando una ventana del tipo Splash, no es eso lo que necesito. Tambien he probado a mostrar la ventana al crear la principal, pero me da un error de violación.

Inicio la apliacaión en el systemTray y no visualizo la ventana principal. Eso funciona perfectamente. Pero también necesito que cuando ya esté cargada toda la aplicación me aparezca una ventana determinada. De hecho parece que como la ventana principal no se muestra no se tienen en cuenta los eventos onShow, onPaint, onActivate, etc. con lo que me encuentro imposibilitado de realizar acción alguna.

Bien, si podeis ayudarme lo agradeceré.

Adolfo Bonis
Barcelona

dec
13-09-2007, 18:35:07
Hola,

Tendrás que ver qué está ocurriendo. Si comienzas una aplicación partiendo de cero, como puedes ver en el ejemplo que adjunto, es perfectamente posible no mostrar el formulario principal y en el evento "OnCreate" de dicho formulario principal, por el contrario, mostrar un formulario "secundario".

adebonis
13-09-2007, 18:56:47
Hola.

Ok. Cierto.

Al final (me has dado la idea) he dejado el código del proyecto como sigue:

fSplash := TfSplash.Create(Nil);
try
fSplash.Show;
fSplash.Label1.Caption := 'Leyendo la configuración del programa...';
fSplash.Update;
Application.CreateForm(TSgpPral, SgpPral);
if SgpPral.varSeguir then begin
fSplash.Label1.Caption := 'Conectando con el Servidor de datos...';
fSplash.Update;
Application.CreateForm(TdmSgp, dmSgp);
Application.CreateForm(TdmCon, dmCon);
Application.CreateForm(TdmMan, dmMan);
Application.CreateForm(TfMaestros, fMaestros);
fSplash.Label1.Caption := 'Comprobando actualizaciones...';
fSplash.Update;
Application.CreateForm(TfCompras, fCompras);
fSplash.Label1.Caption := 'Creando directivas de trabajo...';
fSplash.Update;
Application.CreateForm(TfAsuntos, fAsuntos);
fAsuntos.Show;
end;
finally
fSplash.Free;
end;
if SgpPral.varSeguir then
Application.Run
else
Application.Terminate;

He añadido la línea fAsuntos.Show y me funciona bien.

Gracias.

Adolfo Bonis
Barcelona