buen día titomigue,
Estuve intentando enteder tu problema y no comprendí el lio que tienes con "La Función", hubiese sido bueno que la publicaras para analizarla... asi, que intenté replicar tu error en mi Delphi y mi prueba salió bien... o por lo menos lo que yo esperaba....
Para esto cree un proyecto desde cero, con dos formularios (Form1, form2)... el primero tiene un Button1 y el segundo tiene un Edit1....
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
function ClonoForm(form:TForm; var AIndice:Integer):TForm;
var
ms : TMemoryStream;
clone : TForm;
edit: TEdit;
begin
ms := TMemoryStream.Create;
try
ms.WriteComponent(form) ;
ms.Position := 0;
clone := TFormClass(form.ClassType).CreateNew(Application) ;
ms.ReadComponent(clone) ;
clone.caption:='Clon'+IntToStr(AIndice);
clone.name:='Clon'+IntToStr(AIndice);
clone.Left := form.Left; clone.Top := form.Top; clone.Show; Result := Clone;
finally
ms.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
Var Indice, i : Integer;
ElClon: Tform;
begin
Indice:= 1;
Form2.Show;
ClonoForm(Form2, Indice);
Form2.Edit1.Text:='Hola, soy el original...!!!';
for i := 0 to Screen.FormCount-1 do
if Pos('Clon',Screen.Forms[i].Name) > 0 then
Begin
ElClon := Screen.Forms[i];
TForm2(ElClon).Edit1.Text := 'Soy '+Screen.Forms[i].Name;
End;
end;
end.
Tal vez lo que estás buscando tiene que ver con el objeto global Screen y su lista de forms activos....
nos comentas omo te va, o nos das mas detalles en caso que no sea loq ue buscas...
Un saludo,