Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-02-2008
Avatar de NeoAnderson
NeoAnderson NeoAnderson is offline
Miembro
 
Registrado: feb 2008
Posts: 17
Poder: 0
NeoAnderson Va por buen camino
Question Cómo acceder a las propiedades de un "Parent"

Hola nuevamente, pues estoy de regreso con una nueva duda, me disculpo si es que este hilo ya está abierto, pero no pude encontrar informacion que me sirviera para resolver mi problema.

Tengo un Formulario principal: "TFMain"
Tengo un Formulario "TFImagen" que se creará en tiempo de ejecucion y se alojara en una nueva pestaña de un PageControl1 que está en "TFMain". Esto lo hago con el siguiente codigo:

Código Delphi [-]
Unit Main;
interface
uses
/*....*/ UImagen; //Es el unit del formulatio TFImagen

/*etc, etc*/

procedure TFMain.Abrir1Click(Sender: TObject);
var aForm:TFImagen;
     tabSheet: TTabSheet;     
begin

   //crea una nueva pestaña
   tabSheet := TTabSheet.Create(PageControl1) ;
   tabSheet.PageControl := PageControl1;

   //crear un nuevo form
   aForm := TFImagen.Create(tabSheet) ;
   aForm.Parent := tabSheet;
   aForm.Align := alClient;
   aForm.BorderStyle := bsNone;
   aForm.Visible := true;
   PageControl1.ActivePage := tabSheet;   
   
end;

y hasta ahi todo bien, puedo crear tantos Formularios "TFImagen" como yo quiera y puedo acceder a las propiedades de cualquier "TFImagen" desde "TFMain" con el siguiente codigo:

Código Delphi [-]
(PageControl1.ActivePage.Controls[0] as TFImagen).PropiedadX;

Pero el problema es cuando desde un "TFImagen" quiero acceder a las propiedades de "TFMain". y es que no puedo poner en el unit del formulario dinamico uses Main (que es el unit de TFMain) pk me marca un error por referencia circular, entonces como puedo acceder a las propiedades de mi formulario principal??

Dado que el padre de TFImagen es tabsheet, me imagino que primero debo acceder a tabsheet y luego al padre de tabsheet y asi hasta llegar al TFMain que es el formulario principal, pero pues no tengo ni idea de como hacer esto.

Espero puedan ayudarme nuevamente, y gracias de antemano.
Responder Con Cita
  #2  
Antiguo 11-02-2008
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 25
Crandel Va por buen camino
Lightbulb

para evitar la referencia circular siempre puedes agregar a la unit que necesitas en el uses de la implementación (implementation). Con esto podras acceder a cuanquier metodo o funcion que se encuentre ahi.

Ahora, que puedas acceder no quiere decir que este bien. No tiene mucho sentido que tu imagen este accediendo al formulario principal. Si necesitas algo que esta ahi, lo mas probable es que ese metodo no este en el lugar correcto.

Suerte
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 11-02-2008
Avatar de NeoAnderson
NeoAnderson NeoAnderson is offline
Miembro
 
Registrado: feb 2008
Posts: 17
Poder: 0
NeoAnderson Va por buen camino
Gracias por tu respuesta Crandel, si sé que probablemente no sea logica esta referencia circular, pero para ciertos propositos necesito hacerlo de esta manera por el momento. Lamentablemente no me sirvio la solucion que me diste para resolver el problema, pues solo puedo acceder a los constructores y las funciones, pero no puedo acceder a los componentes (Como el PageControl que tengo ahi) ni a las propiedades como color, caption, etc. Espero puedan darme otra solucion, gracias nuevamente
Responder Con Cita
  #4  
Antiguo 11-02-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pues creo que el asunto puede pasar por solucionar la referencia circular. Si el formulario "padre" expone una variable pública de su tipo, creo que tal vez no fuera mala idea acceder a ella, pero, para eso es preciso que dicha variable sea accesible desde el formulario "Imagen".

Porque reescribir el constructor del formulario imagen, de forma que se le pase tal vez una referencia de la instancia del formulario "padre", de modo que pueda guardarla y usarla cuando le sea menester, esto, digo, ¡oyes! Pues a lo mejor es otra posibilidad...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 12-02-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Cita:
Empezado por dec
Porque reescribir el constructor del formulario imagen, de forma que se le pase tal vez una referencia de la instancia del formulario "padre", de modo que pueda guardarla y usarla cuando le sea menester, esto, digo, ¡oyes! Pues a lo mejor es otra posibilidad...
... pero sigue necesitando el uses, y vuelve a dar referencias circulares, incluso para hacer un posible moldeo de tipos.

¿Para qué necesitas acceder al TFMain?, ¿exactamente qué quieres consultar o modificar?.

El tema de referencias circulares indica un mal diseño. Si te empeñas en seguir por ese camino, enredarás mucho las cosas, tanto que después no sabrás qué demonios hace tu aplicación.

Creo que los tiros van por crear un evento personalizado, pero hasta que no te expliques, no lo puedo confirmar.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 12-02-2008 a las 00:27:28.
Responder Con Cita
  #6  
Antiguo 12-02-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Lepe
... pero sigue necesitando el uses, y vuelve a dar referencias circulares, incluso para hacer un posible moldeo de tipos.
Es cierto, pero, no tiene porqué darse una referencia circular. Si este es el caso, como tú dices, hay algo ahí que ya no es que debería, sino que tendría que plantearse de otro modo. Vamos, digo yo...
__________________
David Esperalta
www.decsoftutils.com
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como cambiar valores en la ventana "General" propiedades del sistema JuanErasmo API de Windows 52 17-02-2012 17:42:20
Comentario "aplastante" contra los que atacan la "piratería" Casimiro Noteví La Taberna 12 07-03-2010 14:03:02
Como hacer que se vea "Si" en vez de "TRUE" en un DBGrid lu9eui C++ Builder 2 07-08-2007 04:03:13
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53


La franja horaria es GMT +2. Ahora son las 16:33:52.


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
Copyright 1996-2007 Club Delphi