Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Iniciar aplicación con ventana no principal (https://www.clubdelphi.com/foros/showthread.php?t=48026)

adebonis 13-09-2007 17:35:49

Iniciar aplicación con ventana no principal
 
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:


Código Delphi [-]
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:

Código Delphi [-]
  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


La franja horaria es GMT +2. Ahora son las 01:50:30.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi