[Lazarus-es] mostrar form encima del principal

Paola Bruccoleri pbruccoleri en adinet.com.uy
Lun Oct 8 14:47:32 CEST 2012


El 08/10/2012 09:15 a.m., Paola Bruccoleri escribió:
> Hola todos..
> hace tiempo tuve esta inquietud pero luego nunca lo experimenté y ahora
> necesito hacerlo pero no lo logro.
> Debo pedir una fecha al comenzar la aplicación, pero por estética, me
> gusta que el form principal ya quede cargado y visible.
>
> No lo hago en el .lpr porque sino se carga primero ese form de fecha y 
> luego el principal, por tanto, decidí hacerlo en el form ppal, en el 
> evento onshow.
>
> procedure TfrmMain.FormShow(Sender: TObject);
> var
>   VQuery: TZQuery;
>   loginfecha:TfrmFechaInicial;
> begin
>   // se pide la fecha
>   loginfecha:= TfrmFechaInicial.Create(nil);
>   if loginfecha.showmodal = mrOk then
>     begin
>       FreeAndNIL(loginfecha);
>     end
>   else
>     Application.Terminate;
> end;
>
> Ese form de fecha tiene obviamente poca cosa: un dbedit para la fecha 
> (debe quedar en una tabla), un botón aceptar (con modalresult: mrOk) y 
> uno cancelar (mrCancel)
> Si el usuario presiona CANCEL, yo quiero que la aplicación se cierre.
>
> El problema es:
> - no se muestra el form principal primero sino el de la fecha primero
> - Si presiono aceptar en el form de la fecha, nunca valida esto:  if 
> loginfecha.showmodal = mrOk then por tanto, la aplicacion siempre 
> termina.
>
> No creo que se pueda hacer con un spash porque la idea de los splash 
> (creo) es mostrar algún form q se muestre mientras se carga la 
> aplicación.
> Cómo podría solucionarlo?
> muchas gracias!
Hola de nuevo..
al final, coloqué ese método en el evento onActivate, pero me pasa algo 
bien raro. A pesar de que funciona como quiero, el form principal 
aparece con el tamaño que tiene en diseño (tamaño mediano) y una imagen 
que coloqué abajo a la derecha aparece fuera del form!

forcé el maximizado del form principal antes de mostrar el form de la 
fecha y ni bolilla le da! (de todas formas, en la propiedad ya está 
colocado ese valor.)


procedure TfrmMain.FormActivate(Sender: TObject);
var
   loginfecha:TfrmFechaInicial;
begin
   frmMain.WindowState:= wsMaximized;

   loginfecha:= TfrmFechaInicial.Create(nil);
   if loginfecha.showmodal = mrOk then
     begin
       FreeAndNIL(loginfecha);
     end
   else
     Application.Terminate;
end;




More information about the Lazarus-es mailing list