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 23-02-2004
ronson ronson is offline
Miembro
 
Registrado: feb 2004
Posts: 100
Poder: 21
ronson Va por buen camino
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!
Responder Con Cita
  #2  
Antiguo 23-02-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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).
Responder Con Cita
  #3  
Antiguo 23-02-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 24-02-2004
ronson ronson is offline
Miembro
 
Registrado: feb 2004
Posts: 100
Poder: 21
ronson Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 24-02-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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?
Responder Con Cita
  #6  
Antiguo 24-02-2004
ronson ronson is offline
Miembro
 
Registrado: feb 2004
Posts: 100
Poder: 21
ronson Va por buen camino
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);

Responder Con Cita
  #7  
Antiguo 24-02-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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).
Responder Con Cita
  #8  
Antiguo 24-02-2004
ronson ronson is offline
Miembro
 
Registrado: feb 2004
Posts: 100
Poder: 21
ronson Va por buen camino
muchas gracias

muchas gracias por todo esto funciona a las mil maravillas.


Responder Con Cita
  #9  
Antiguo 24-02-2004
ronson ronson is offline
Miembro
 
Registrado: feb 2004
Posts: 100
Poder: 21
ronson Va por buen camino
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.
Responder Con Cita
  #10  
Antiguo 24-02-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
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 04:43:21.


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