Acceso a objetos/propiedades de otro Form
Haber si me podeis explicar esto que no entiendo:
Desde el Form1, el principal de la aplicacion, creo otro formulario, por ejemplo así: Si desde el Form2 quiero acceder a alguna objeto/propiedad del Form1, me basta con añadir en el Unit2 lo siguiente: Hasta aquí todo bien, si ahora vuelvo a crear otro form desde el Form2, así: Si ahora quiero acceder a algun objeto el Form2 se supone que debo incluir: Pues no funciona, lanza una excepción EAccesViolation, y lo curioso es que en tiempo de diseño si que puedo acceder perfectamente a los objetos/propiedades del Form2. Es mas, si incluyo Unit1 en el uses puedo acceder sin problemas a los objetos del Form1. Debo cometer algun error que no consigo ver. Utilizo Delphi XE i Windows XP |
Y, ¿de qué manera intentas acceder a Form2 desde Form3? Yo creo que estás trantando de hacerlo usando la variable que crea delphi por defecto cuando añades un formulario a tu aplicación, pero cuando creas tu Form2 desde el principal, no estás usando dicha variable sino un objeto creado al vuelo.
// Saludos |
Al crearse el Form2 se declara la variable:
Todos las propiedades/funciones/etc. de ese Form creado en ejecucion se acceden sin problemas así: Lo que no comprendo es porqué no puedo acceder a ellas desde el Form3 creado también en ejecución. |
|
Cita:
Lo que debes entender es que no es lo mismo el form que se declara al añadir el formulario, que el que estás creando en TForm1.Button1Click. Otra cosa sería si pusieses:
Porque aquí sí estás asignando a la variable Form2 el objeto que creas. // Saludos |
Aaaah! Claro! Ahora lo entiendo (bueno, más o menos), si declaro la variable Form2 en la Unit1 si que puedo acceder desde otras Unit.
Muchas gracias por su ayuda. Saludos |
Hola adrall.
Cita:
Se crea una instancia de la clase TForm2, pero no fué asignada a ninguna variable, no hay forma de referenciarla si no es dentro del width de ese procedimiento. Ahora comparalo con el código de román: Ahora sí podes referenciar la instancia mediante la variable Form2. Cita:
Un saludo. |
La franja horaria es GMT +2. Ahora son las 15:37:42. |
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