Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ventanas,Ventanas Mdi=Dolor de cabeza ? (https://www.clubdelphi.com/foros/showthread.php?t=8841)

IVAND 02-04-2004 22:46:56

Ventanas,Ventanas Mdi=Dolor de cabeza ?
 
Hola a todos


Mi pregunta es la siguiente,el uso de ventanas Padres e hijas esta claro para mi, pero me planteo una duda, como puedo hacer para crear una pantalla de presentacion y luego de esta la pantalla de menus que sera padre y contendra a las hijas , como se debe definir la primera pantalla, porque e intentado de todo y me da un error indicando que una ventana esta en ejecucion MDI


Por su interes a este dolor de cabeza


Gracias

Lepe 05-04-2004 06:11:33

En Projects --> view source

Ahí creas la pantalla de presentacion nada mas empezar, haces un Update de dicha pantalla y al final, antes de Application.run, haces un Free de la pantalla.

Saludos

IVAND 05-04-2004 15:48:10

Gracias por tu respuesta

Voy a probar nuevamente , pero me parece que ya lo hice y el error persiste , aunque lo logico es destruir la ventana y asi es como si nunca hubiera sido ejecutada :-)


Reviso y te comento

kalimero 05-04-2004 15:58:26

Hola.
Solo un formulario ha de tener la propiedad FormStyle = fsMDIForm.
Ese será el padre , en tu caso la de menus. El resto han de tener la propiedad fsMDIChild.
Saludos

Nuria 05-04-2004 16:56:06

Hola!

Añadir a lo que ha dicho Kalimero, que si la ventana Child la quieres abrir como Modal, tendrías que hacer lo siguiente:

Código:

  form:=Tform.Create(self);
  try
    form.FormStyle:=fsNormal;
    form.Visible:=false;

    form.ShowModal;
  finally
    form.Free;
  end;

De lo contrarío te dará un error. Si la quieres abrir como NO Modal :

Código:

form:=Tform.Create(self);
  try
    form.Show;
  finally
    form.Free;
  end;

Espero que te sirva de ayuda... Saludos!:)

Lepe 06-04-2004 02:52:50

IVAND, me vas a perdonar, pero despues de ver las 2 respuestas anteriores, ya dudo que lo haya entendido bien.

Pongo un ejemplo: Cuando abres delphi, lo primero que aparece es la ventana con el logotipo, y pasados unos segundos, cuando ha cargado el resto de la aplicación, la ventana del logotipo se cierra. ¿la ventana del logotipo es lo que quieres hacer?

Si es así, debes seguir estos pasos:
La ventana de presentacion debe tener FormStyle := fsnormal ya que es la primera que se creará y por tanto, la MDI aún no se ha creado.

Projects --> View Source y editas el contenido

Código:

  Application.Initialize;
  FrmCredits := TFrmCredits.Create(nil);
  FrmCredits.Show;
  FrmCredits.Update;
//  los mensajes de redibujado tienen poca prioridad y los deja para el final.
// Así que obligamos a que se dibuje en pantalla con el Update.
                       

  // creacion del resto de ventanas
  // la MDI principal y algunas auxiliares que necesites.

  FrmCredits.Free; // si usas un timer quita esta linea
  Application.Run;

Si en autocreate solo tienes 1 o 2 ventanas, probablemente ni saldrá la ventana de presentación, en tal caso, en el OnShow de la ventana, activa un timer para que se quede al menos 2 segundos; y en el Evento OnTimer haz un FrmCredits.Release;

Saludos

jachguate 06-04-2004 03:36:45

Solo agregar a la magnifica respuesta de Lepe que a esta Ventana del logotipo, normalmente se le llama Splash o SpashScreen. Si usas esta palabara para buscar en los foros vas a encontrar varias soluciones.

Hasta luego.

;)

marlok 08-05-2006 17:27:24

Espero que te sirva, cuando necesité hacer esto, lo que hice fue setear la propiedad Application.ShowMainForm:= false, mostrar el Splash y cuando se cierra ponerla nuevamente en true.
quedaria asi.
Código Delphi [-]
application.inicialize;
Application.ShowMainForm:= false;
Application.CreateForm(TModDatos, ModDatos);
Application.CreateForm(TMDIPrincipal, MDIPrincipal);
Application.CreateForm(TFlogueo, Flogueo); (este es el splash)
Application.Run;
en el OnCLose del Splash pones:
Código Delphi [-]
Application.ShowMainForm:= true;

a mi me funcionó de maravillas.

P/D: lo de poner el timer para que se quede un tiempo la pantalla es buena idea.

Saludos.


La franja horaria es GMT +2. Ahora son las 08:54:26.

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