Ver Mensaje Individual
  #3  
Antiguo 27-11-2011
beginner01 beginner01 is offline
Miembro
NULL
 
Registrado: mar 2011
Ubicación: República Dominicana
Posts: 181
Reputación: 14
beginner01 Va por buen camino
Cita:
Empezado por alexisenp Ver Mensaje
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.

Prueba de esta manera.

Código Delphi [-]
uses Unit2;  // Incluyo la referencia en el Uses
...
procedure TForm1.Button1Click(Sender: TObject);
//var f2 : Tform2; //Esta variable solo será visible durante la ejecución de este procedimiento
begin
  Form2 := TForm2.Create(self);
  try
     Form2.ShowModal;
  finally
     Form2.Free;
  end;
end;

Prueba acceder al form2 desde Form3 usando.

Código Delphi [-]
Form2.edit1.text :='algo'

haz lo mismo para Form3 y los demas formularios que quieras crear.
Responder Con Cita