Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-06-2003
Sandochan Sandochan is offline
Registrado
 
Registrado: may 2003
Posts: 6
Poder: 0
Sandochan Va por buen camino
Super lio con los forms(gran problema)

Hola, tengo un gran problema, el cual lo voy a describir:

tengo una pantalla, (la de logueo) la cual la he puesto como Auto create, ahora lo que quiero es abrir otra pantalla y lo que hago es:

frmPrincipal.create(self);
frmPrincipal.showmodal;
close;

donde frmPrincipal es la pantalla que quiero abrir una vez qe le doy aceptar a la de logueo( la cual es la primera pantalla q se auto crea). pero como lo normal es al abrirse frmPrincipal se cierre la otra, no se puede. lo he intentado de varias maneras,

en el evento onshow del Principal hago
frmlogueo.close;
y lo que pasa es que se cierra toda la aplicacion

tiene algo que ver que sea autocreada?.

como hago para poder abrir la otra y cerrar la anterior
Muchas gracias
Responder Con Cita
  #2  
Antiguo 24-06-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

No tiene que ver con que sea autocreate... pero por definición el primer form que creas con Application.CreateForm es el form principal de la aplicación... y al cerrarse, pues cierra la aplicación también.


Podes solucionar el problema editando el código del programa y cambiando el Application.CreateForm por un

Código:
  MiForma := TMiForma.Create(Application);

  o 

  MiForma := TMiForma.Create(nil);
Así, al cerrar la forma, pues no cerrará la aplicación.

Hasta luego.



por cierto... te recomiendo tratar de utilizar un título mas adecuado, pues con los forms, regularmente todos tenemos lios... y con titulos como ese muchos se negarán siquiera a leer tus mensajes...
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 24-06-2003
Avatar de madman
madman madman is offline
Miembro
 
Registrado: may 2003
Ubicación: Nayarit, México
Posts: 242
Poder: 22
madman Va por buen camino
Hola!

A lo ke leo... y explicando pokito más
Cuando creaste la aplicación usaste la primera form (Form1) que por default te da Delphi como la de LogON y despues agregaste otra form con la cual trabaja todo el programa (FormPrincipal).

Asi pues la form de LogON sigue siendo la form principal de toda la aplicacion y cuando la cierras, pues cierras tu programa.

Lo que yo uso para crear form's de LogON o Splash, esas que aparecen antes de la FormPrincipal. Es en el evento _OnShow de la FormPrincipal ponerle un FormSplash.ShowModal, asi me muestra primero la de Logeo (como tu le dices).

Código:
//Evento ONShow de la FormPrincipal
procedure TFormPrincipal.FormShow(Sender: TObject);
begin
        FormSplash.ShowModal;
end;
Ya en la ventana de Splash validas la entrada del usuario.

Solo que tendrás que cambiar las form's para que la FormPrincipal kede como principal en la aplicación.

Te recomiendo que uses la primera form que te da Delphi como la principal y de ahi agregues las demas dependientes.
__________________
Guía de Estilo.

Última edición por madman fecha: 24-06-2003 a las 09:18:57.
Responder Con Cita
  #4  
Antiguo 25-06-2003
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Cita:
Posteado originalmente por Sandochan
Hola, tengo un gran problema, el cual lo voy a describir:


frmPrincipal.create(self);
frmPrincipal.showmodal;
close;

Sólo un comentario al margen. Supongo que ese código no es exactamente el que se ejecuta ya que produciria una exceptión de accso a memoria.
frmPrincipal no es una classe, sino una referencia, que antes de instanciarse no apunta a nigun sitio a no ser que tambien este como autocreate, con lo cual tendrás una fuga de memoria importante. Para instnciar un form o cualquier otra classe en ejecución tienes que poner:

referencia := TMiClase.Create(Owner);

En el caso concreto de los forms tambien se puede usar:

CreateForm(TMiClase, Referencia);
__________________
E pur si muove
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:30:18.


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
Copyright 1996-2007 Club Delphi