Ver Mensaje Individual
  #4  
Antiguo 16-10-2007
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Reputación: 22
gatosoft Va camino a la fama
Hola Gabrio,

Todos los formularios tienen un array que almacena los Formularios hijos que pueda tener: MainForm.MDIChildCount

Puedes recorrerlo asi:

Código:
  

var
 
VariableTipoTFORM: Tform;

for i:= 0 to MainForm.MDIChildCount-1 do
  begin
     VariableTipoTFORM:=   MainForm.MDIChildren[i];      
  end;//For
Una vez tienes un objeto instanciado en la variable (VariableTipoTFORM), puedes trabajar con ella, por ejemplo, preguntando su nombre, tipo, caption, color, etc.

Quiero aclararte que en el codigo de ejemplo que pones el parametro que se pasa en el método create, no es precisamente el padre del objeto.

Código:
Hijo := THijo.Create(Padre);
Es el OWNER o propietario... el Propietario se define para saber quien es el que se encarga de liberarlo de memoria...

La moyoria de lso objetos tienen una propiedad llamada Parent (este si es el padre)...

Lo normal sería que pudieras hacer esto:

Código:
FormHijo.parent:=FormPadre
Pero los ObjetostForm no tienenn un Parent y por eso se utiliza el array que te mencioné....

Por Otro lado una aplicación solo puede tener un Formulario tipo MDI Y al crear un Formulario tipo MDIChild, el compilador lo asigna automáticamente al unico MDI que debe haber...

No tengo un Delphi a la mano para reproducir tu error, pero deberia funcionarte, a menos que al crearse el formulario no lo este haciendo como tipo MDI, o que exista una restricción adicional en Delphi que Obligue a que el MDI sea siempre el Form Principal... Entiendo que tu Form MDI no es el principal....


Bueno, son solo ideas, revisa y nos cuentas...
Responder Con Cita