![]() |
aplicacion MDI
Bueno amigos la verdad es que no se si este es el mejor sitio para dejar esta duda pero como mi aplicacion va de bases de datos la espolso aqui, jeje!!.
Resulta que estoy haciendo una aplicacion MDI y he leido que no es aconsejable tener todos los formularios cargados en memoria por razones obvias, me han dicho que carge uno solo (el Main Form) y luego vaya "mostrando" los sucesivos, antes mostrarlos obviamente los tengo qeu crear, y es aqui donde tengo la duda, no se como crear los formularios hijos con la sentencia create, imaginemos que tengo un formulario padre MainForm y cuando le doy a un boton quiero que aparezca el formulario frmAlbaranes(muy tipico), seria: frmAlbaranes.create(... y es aqui donde no se seguir, he probado con: frmAlbaranes.create(Application) pero creo que esto es un soberano disparate. He comprado la guia de desarrollo de delphi 5 de Texeira pero alli no he encontrado la utilizacion de create como tal. Muchas gracias de antemano y saludos a todos. P.D. No te enfades conmigo por esto Cadetill,jeje, saludos!:D :D |
Hola.
Solo faltava la T inicial que indica que te refieres a la clase : TfrmAlbaranes.create(Application); De esta forma indica que estás creando una instancia de la Clase TfrmAlbaranes (o sea un formulario de Albarán). En cambio al utilizar frmAlbaranes, estabas usando una variable global que crea por defecto Delphi, pero que no sirve de mucho cuando puedes tener varias instancias de un mismo tipo de formulario abiertas. Saludos. |
También si no tenes frmAlbaranes en AutoCreate... no podras usar esa referencia.
Lo normal sería asignarlo asi: frmAlbaranes := TfrmAlbararanes.Create(application); o bien Application.CreateForm(frmAlbaranes, TfrmAlbaranes); Hasta luego. ;) |
vale guay pero...
Si ahora ya me crea la ventana, pero lo que pasa es que justo cuando me la va a crear y pese que he creado una antes me dice que:
Can not create form. no MDI forms active currently now. Como tengo que activar la ventana madre MDI?:D SALUDOS |
Ya que no es un problema de base de datos, muevo el hilo a Varios
Por otro, podrías poner el trozo que te da ese error? |
vale solucionado
ya esta solucionado resulta que si no creo la ventana madre antes que las hijas me da el error.
Como las destruyo?, cual seria la sentencia para destruir si la de crear es: TfrmAlbaranes.create(Application); :) |
Hola.
Como cualquier otro formulario, se elimina con el método Release. Por ejemplo, para eliminar la ventana MDI activa : frmPrincipal.ActiveMDIChild.Release; Saludos. |
muchas gracias
muchas gracias por todo esto funciona a las mil maravillas.
:p |
otra dudilla
cuando creo el foemulario madre MDI
Application.createForm(TMainForm,MainForm) me lo crea y guay pero cuando hago luego: Application.createForm(TfrmAlbaranes,frmAlbaranes) me da un error y me dice que no hay ningun formulario MDI activo. Debo activarlo el MAinForm de alguna manera. Gracias. |
Hola.
Prueba a ponerlo en el evento OnActivate del Formulario Principal. Código:
procedure TMainForm.OnActivateSaludos. |
| La franja horaria es GMT +2. Ahora son las 01:35:21. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi