Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Modificar componente de Formulario Padre (https://www.clubdelphi.com/foros/showthread.php?t=87029)

NEG1414 05-11-2014 18:03:06

Modificar componente de Formulario Padre
 
Buenas

Desde un formulario(Padre) creo otro (Hijo) de la forma:

Código:

TFORM2 *FHIJO;

 FHIJO = new TFORM2(this);
 
 FHIJO->ShowModal();

delete FHIJO;

Es posible una vez con el foco en el formulario hijo, modificar un componente (TPanel,TLabel..) del form Padre..

Gracias

ecfisa 05-11-2014 18:22:14

Hola NEG1414.
Cita:

Empezado por NEG1414 (Mensaje 484275)
...
Es posible una vez con el foco en el formulario hijo, modificar un componente (TPanel,TLabel..) del form Padre..

Si no entiendo mal la situación, es posible si lo muestras de manera no modal, es decir:
Código:

  FHIJO->Show();

Saludos :)

NEG1414 05-11-2014 22:46:32

Gracias por contestarme..

Tu respuesta me ha planteado dos preguntas:

1) Que pierdo si muestro el Form de la forma FHIJO->Show();(Supongo que el Form Padre seguira "Activo" y se podran manipular sus componentes en tiempo de ejecucion)

2) Si decido no mostrarlo modal como modifico el componente del Form Padre.

Gracias.

aguml 05-11-2014 23:30:54

si en el unit de tform2 incluyes el .h de tform1 podras modificar cualquier componente por ejemplo Form1->Panel1->Caption= "Cambiado desde Form2";

ecfisa 05-11-2014 23:50:08

Hola NEG1414.
Cita:

Empezado por NEG1414 (Mensaje 484296)
Gracias por contestarme..

Tu respuesta me ha planteado dos preguntas:

1) Que pierdo si muestro el Form de la forma FHIJO->Show();(Supongo que el Form Padre seguira "Activo" y se podran manipular sus componentes en tiempo de ejecucion)

2) Si decido no mostrarlo modal como modifico el componente del Form Padre.

Gracias.

Había interpretado que una vez abierto el form hijo deseabas modificarlo desde el padre y querías lo contrario...:o

Es tal cuál te explica aguml, posicionado en el form hijo: File => Include Unit Hdr... => elije el form padre. Luego podrás modificar las propiedades de los objetos del form padre como te indica.

Saludos :)

NEG1414 06-11-2014 07:58:18

Gracias por contestar...

El caso es que al realizar el acceso de esa manera, al ejecutar la linea donde hago el cambio salta el error: `Acces Violation at adresss.....

mi codigo:

Código:

#include ¨FormPadre.h¨
...............
............

FFormPadre->Panel1->Visible = false;

v\||/

Alguna idea.

aguml 06-11-2014 10:39:18

te falta algo al crear el panel. ¿Lo creas en ejecucion? Asegurate que la propiedad parent apunte al form padre.

escafandra 06-11-2014 11:08:44

¿No será que FFormPadre es un puntero con valor nulo?

Revisa ese punto.


Saludos.

NEG1414 06-11-2014 18:57:39

Gracias a los dos por contestar...

le voy a dar unas vueltas

NEG1414 06-11-2014 20:53:48

Creo que he dado con el problema... El FormPadre es a su vez hijo Modal de otro Form (Abuelo :)) y esto crea un conflicto ..el caso es que he hecho un sencillo programa con tres forms el "Abuelo" abre modalmente al "Hijo", este modifica un componente del "Abuelo" de la manera que me habeis indicado y perfecto...el resultado no es el mismo cuando a su vez abro el Form "Hijo" modalmente desde el form"padre" e intento modificar uno de sus componentes... me da el error comentado al inicio....

Hay alguna solucion para este problema "FAMILIAR"

gracias

NEG1414 07-11-2014 07:30:03

Creo que he dado con el problema... El FormPadre es a su vez hijo Modal de otro Form (Abuelo :)) y esto crea un conflicto ..el caso es que he hecho un sencillo programa con tres forms el "Abuelo" abre modalmente al "Padre", este modifica un componente del "Abuelo" de la manera que me habeis indicado y perfecto...el resultado no es el mismo cuando a su vez abro el Form "Hijo" modalmente desde el form"padre" e intento modificar uno de sus componentes... me da el error comentado al inicio....

Hay alguna solucion para este problema "FAMILIAR"

gracias

Nota:Perdonar que repita el post.. me he echo un lio con editar y citar

aguml 07-11-2014 10:50:07

yo ya me perdi en el arbol genealogico XD Se me ocurre que prueves algo. Si el padre es modal y el hijo es modal, cuando muestres al hijo oculta al padre antes, y muestralo despues. O sea, tu haras en un boton FormHijo->ShowModal(); pues antes de esa linea pon Hide(); y luego en el hijo haces por ejemplo FormPadre->Panel1->Width = 100; pues pon despues FormPadre->ShowModal() o FormPadre->Show(). Igual es problema de que haya dos modal a la vez asi que yo probaria a quitar el modal antes de mostrar la nueva modal y luego de cerrar la hija devolver a modal al padre.

NEG1414 07-11-2014 16:47:24

Gracia por contestarme...

Si no encuentro solucion probare a abrir el hijo de la forma NO MODAL: FHIJO->Show() y haber que pasa..


La franja horaria es GMT +2. Ahora son las 02:46:11.

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