Acceso desde un formulario y sus objetos desde otro
Estoy desarrollando un proyecto con Delphi Berlin y Firemonkey y me encuentro con el siguiente problema, que intuyo que es básico, pero no consigo encontrarle solución.
Se trata simplemente de como acceder a objetos (variables y campos de edición que están en un formulario desde otro). En las pruebas iniciales, tenía tan solo dos formularios y no tuve problema para acceder desde Form2 a variables y objetos que estaban en Form1 (el cual era el formulario principal del proyecto "Main Form" en options). En cuanto he añadido más módulos y Form1, ha dejado de ser el formulario principal, el acceso al mismo desde el segundo formulario (Form2) no es posible, dándome error al intentarlo y pudiendo comprobar al hacer "debug" que no es posible el acceso a Form1. A continuación está el código simplificado de ambos formularios, concretamente el error lo da en las siguientes lineas: uQProvin.SQL.Text :='select * from ' + Form1.cBase + '.dbo.Provincias order by cNomPrv'; Form1.lEditProvin.items.Clear; Gracias por cualquier aclaración o sugerencia. Saludos,
|
En principio no puedes/debes tener declaraciones en Form1 de Form2 en la parte "implementation" y viceversa, ya que crea referencias cruzadas entre los formularios.
Uno debes declararlo en la parte "Interface" y otro en la parte "Implementation" para evitar ese problema Saludos |
Sugerencias:
|
Muchas gracias a ambos por vuestras respuestas.
Creo que tengo algunas pistas para realizar algunas pruebas e intentar solventarlo. Tienes toda la razón Neftali en los dos puntos que comentas. Sin embargo, en el primer punto, el error no lo cite porque creo que no ayuda mucho: Access violation ad address 013CB776 in module 'xxxxx.exe'. Y la aplicación se cierra. Voy a intentar solventarlo y con el resultado que obtenga lo comento de nuevo. Si no consigo resolverlo, o me quedo con dudas, haré lo que propones, crearé un ejemplo simple y subiré el código. Muchas gracias de nuevo. Un saludo. |
Cita:
Access Violation significa que has intentado acceder a un objeto que no está creado o que ha sido liberado. Por lo que comentas antes Form1 era el formulario principal y ahora ya no lo es. El formulario principal (por serlo) se crea de forma automática al arrancar el proyecto. Si ahora ya no lo es, es posible que si no has cambiado nada de código, el Form1 que antes estaba creado, ahora ya no lo esté. Si es así, debes crearlo antes de usarlo. De todas formas este error debería ser fácil de encontrar si haces debug del programa paso a paso. |
La franja horaria es GMT +2. Ahora son las 19:51:43. |
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