En mi aplicacion MDI quiero crear una ventana hija desde otra ventana hija
Uso delphi7 y tengo una aplicacion MDI (casi terminada) y necesito abrir una ventana hija desde otra ventana hija. Aguien sabe como o si hay algun truco que haga que parezca que asi es. Os explico el caso concreto:
El caso es que en una ventana hija muestro un grid con datos de los contactos de una agenda, y quiero que al hacer doble clic sobre una celda del grid quiero que me abra otra ventana MDI con la infomacion del contacto. La solucion cutre es poner un panel sobre la ventana del grid y hacerlo visible, pero prefiero no hacer no eso porque queda un poco cutre, ademas asi solo podria abrir una ficha de contaco y lo bueno seria poder tener varias fichas a la vista. Un saludo y gracias. |
Si es abrir otra ventana que este contenida por el MDI, simplemente tienes que crear otra ventana del tipo MDIChild.
Si quieres que esta otra ventana, este contenida dentro de tu child, mira este hilo: http://www.clubdelphi.com/foros/showthread.php?t=449 |
El probela es que ya lo he intentado pero me sale un error. Lo que hago es esto:
Código:
procedure TFAgenda.AadirDireccion1Click(Sender: TObject); Como se hace? gracias |
Esto te va a fallar llámeslo desde donde lo llames. Si no hoy, mañana.
Para crear el formulario debes hacer algo como:
// Saludos |
¿¿Seguro que FAltaDireccion es la clase y no es una variable??
|
ya me funciono con:
UAltaDirecciones.FAltaDirecciones.Create(Self); Gracias |
Para mi que no lo ha entendido :confused:
Si tienes declarado algo así:
No puedes crear la ventana con:
porque la primera vez que se ejecute ese código, Form1 apunta a nil, y estarás atravesando un puntero nulo al intentar acceder al método Create. En algunos casos, puedes hacer esto: En este caso no se utiliza la variable Form1 para nada, pero como ves, se usa un try ... finally, para destruir el objeto al final. Lo normal es crearlo así:
XXX será el que se encargue de liberar esa ventana, si despues más abajo haces una llamada a Form1.Free, o bien freeandnil(Form1), entonces puedes sustituir XXX por nil (es decir, nadie se encarga de liberar la ventana. Imagina que Form2, es la ventana de contactos, y al hacer doble clic, se abre el Form1 con la información detallada, Si quieres que al cerrar la ventana de contactos, se cierre automaticamente la ventana de información detallada, puedes poner
Si una ventana va a estar creada durante toda la vida de la aplicación, puedes usar:
Por tanto, tienes 3 métodos para crear ventanas, cualquier otro método que uses, tarde o temprano, como ya te han dicho, fallará. Un saludo |
Por cierto, ¿por qué crees que todas las clases de delphi empiezan con la letra T , Tform1, TStringList, etc..
Para recordar que es un Tipo de datos, y eliminar fallos en la creación de objetos. Moraleja: Sigue un Estandar para nombrar componentes, tipos y variables. Aqui tienes un hilo sobre esto Un saludo |
Gracias por la informacion, a ver si reviso la forma de crear las ventanas pues lo hago a imagen de un ejemplo que sqaque de un manual donde explicaba como se hacen las aplicaciones MDI.
Gracias por la informacion. |
La franja horaria es GMT +2. Ahora son las 16:10:19. |
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