FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
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! |
#2
|
||||
|
||||
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#3
|
||||
|
||||
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.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#4
|
|||
|
|||
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? SALUDOS |
#5
|
|||
|
|||
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? |
#6
|
|||
|
|||
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); |
#7
|
||||
|
||||
Hola.
Como cualquier otro formulario, se elimina con el método Release. Por ejemplo, para eliminar la ventana MDI activa : frmPrincipal.ActiveMDIChild.Release; Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#8
|
|||
|
|||
muchas gracias
muchas gracias por todo esto funciona a las mil maravillas.
|
#9
|
|||
|
|||
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. |
#10
|
||||
|
||||
Hola.
Prueba a ponerlo en el evento OnActivate del Formulario Principal. Código:
procedure TMainForm.OnActivate begin TfrmAlbaranes.Create(Application); MainForm.OnActivate := nil; end; Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|