Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   aplicacion MDI (https://www.clubdelphi.com/foros/showthread.php?t=7672)

ronson 23-02-2004 20:35:20

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

guillotmarc 23-02-2004 20:43:52

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.

jachguate 23-02-2004 21:23:55

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.

;)

ronson 24-02-2004 09:18:18

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

__cadetill 24-02-2004 09:28:23

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?

ronson 24-02-2004 09:40:55

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);

:)

guillotmarc 24-02-2004 09:48:40

Hola.

Como cualquier otro formulario, se elimina con el método Release.

Por ejemplo, para eliminar la ventana MDI activa : frmPrincipal.ActiveMDIChild.Release;

Saludos.

ronson 24-02-2004 10:04:19

muchas gracias
 
muchas gracias por todo esto funciona a las mil maravillas.


:p

ronson 24-02-2004 12:05:30

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.

guillotmarc 24-02-2004 12:18:21

Hola.

Prueba a ponerlo en el evento OnActivate del Formulario Principal.

Código:

procedure TMainForm.OnActivate
begin
  TfrmAlbaranes.Create(Application);
  MainForm.OnActivate := nil;
end;

NOTA : Como puedes ver, despues de crear el formulario hijo, elimino el evento OnActivate, puesto que solo queremos crear el Albaran en la carga de la aplicación, o sea la primera vez que se ejecuta ese evento.

Saludos.


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