Ver Mensaje Individual
  #1  
Antiguo 27-11-2011
alexisenp alexisenp is offline
Registrado
NULL
 
Registrado: nov 2011
Posts: 3
Reputación: 0
alexisenp Va por buen camino
Acceder a componentes de otro form

Hola, espero me puedan ayudar con este problema que tengo

Desde el Form1, el principal de la aplicacion, creo otro formulario, por ejemplo así:

Código:
uses Unit2;  // Incluyo la referencia en el Uses
...
procedure TForm1.Button1Click(Sender: TObject);
var f2 : Tform2;
begin
  f2:= TForm2.Create(self);
  try
     f2.ShowModal;
  finally
     f2.Free;
  end;
end;
Si desde el Form2 quiero acceder a alguna objeto/propiedad del Form1, me basta con añadir en el Unit2 lo siguiente:
Código:
implementation 

uses Unit1;
Hasta aquí todo bien, si ahora vuelvo a crear otro form desde el Form2, así:
Código:
uses Unit3;  // Incluyo la referencia en Uses
...
procedure TForm2.Button1Click(Sender: TObject);
var f3 : Tform3;
begin
   f3:=TForm3.Create(self);
   try
      f3.ShowModal;
   finally
      f3.Free;
   end;
end;
Para acceder a algun objeto el Form2 desde el Form3 incluí:
Código:
implementation 

uses Unit2;
Ahora al intentar asignarle un texto a un edit del Form2 desde el Form3, 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 del form 3 si que puedo asignarle valores a los edit del Form1 sin problemas.

Intente crear la variable de tipo Form2 en el interface del Form1 para luego incluir el Unit1 en el Form3 y poder acceder de la forma:
Código:
f2.edit1.text :='algo'
pero tambien da problemas.

Debo cometer algun error que no consigo ver.
Espero puedan ayudarme, de antemano gracias.

Utilizo Delphi XE y Windows 7
Responder Con Cita