Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas al acceder a componentes de formularios en tiempo de ejecución (https://www.clubdelphi.com/foros/showthread.php?t=93596)

MAXIUM 26-11-2018 04:59:32

Problemas al acceder a componentes de formularios en tiempo de ejecución
 
Hola, tengo el siguiente problema

Este es el código que va dentro de un Botón para crear un formulario en tiempo de ejecución (Form1)
Código Delphi [-]
With TForm2.Create(Self) Do
Try
    ShowModal;
Finally
    Free
End;

Ahora el problema ocurre cuando quiero acceder a un componente de este Form2. Sea desde el mismo Form u otro.

El siguiente ejemplo genera un error en tiempo de ejecución

Form2.Button1.Enable:= True;

¿Se ha visto antes?

De antemano, muchas gracias.

Casimiro Notevi 26-11-2018 07:59:47

¿Cómo creas el Form?
¿Dónde le das el nombre, el parent, etc.?

escafandra 26-11-2018 08:23:28

Cita:

Empezado por MAXIUM (Mensaje 529717)
Hola, tengo el siguiente problema
Form2.Button1.Enable:= True;

Ese es el error.
1. Cuando se diseña un formulario para ser creado dinámicamente por código, se debe definir como NO autocreado, ahorrarás recursos
2. Cuando lo creas, la variable Form2 no apunta al formulario creado dinámicamente sino al estático o a nada.
3. No esperes, por tanto, que esa linea de código funcione ni ninguna otra que trate de acceder a un componente de ese formulario, dentro o fuera, a través de Form2.
4. Si precisases alcanzar un componente de TForm2 deberás declarar una variable de ese tipo y asignarle el Form creado.


Saludos.

MAXIUM 26-11-2018 12:52:28

Cita:

Empezado por escafandra (Mensaje 529719)
Ese es el error.
1. Cuando se diseña un formulario para ser creado dinámicamente por código, se debe definir como NO autocreado, ahorrarás recursos
2. Cuando lo creas, la variable Form2 no apunta al formulario creado dinámicamente sino al estático o a nada.
3. No esperes, por tanto, que esa linea de código funcione ni ninguna otra que trate de acceder a un componente de ese formulario, dentro o fuera, a través de Form2.
4. Si precisases alcanzar un componente de TForm2 deberás declarar una variable de ese tipo y asignarle el Form creado.


Saludos.

Muchas gracias por las respuestas.

Puedes darme un ejemplo para tenerlo más claro. De antemano, muchas gracias ^\||/

4. Si precisases alcanzar un componente de TForm2 deberás declarar una variable de ese tipo y asignarle el Form creado.

Caminante 26-11-2018 14:50:45

Hola

Prueba asi

Código Delphi [-]
Form2:=TForm2.Create(Self);
With form2 Do 
Try     
ShowModal; 
Finally     
Free; 
End;


La franja horaria es GMT +2. Ahora son las 00:08:00.

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