Hola.
Te pongo un ejemplo sencillo de como podés manejar los objetos creados en ejecución.
Código Delphi
[-]
...
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Contnrs;
type
TForm1 = class(TForm)
btnLlama: TButton;
procedure FormShow(Sender: TObject);
procedure btnLlamaClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
FObjLst: TObjectList;
function GetCmpt(AName: string): TComponent;
procedure EditEnter(Sender: TObject);
procedure EditExit(Sender: TObject);
public
end;
var
Form1: TForm1;
implementation {$R *.dfm}
procedure TForm1.EditEnter(Sender: TObject);
begin
ShowMessage('Edit Enter');
end;
procedure TForm1.EditExit(Sender: TObject);
begin
ShowMessage('Edit Exit');
end;
function TForm1.GetCmpt(AName: string): TComponent;
var
i: Integer;
begin
Result:= nil;
for i:= 0 to FObjLst.Count -1 do
if TEdit(FObjLst.Items[i]).Name = AName then
Result:= TComponent(FObjLst.Items[i]);
end;
procedure TForm1.FormShow(Sender: TObject);
var
TE: TEdit;
i: Integer;
begin
FObjLst:= TObjectList.Create;
for i:= 1 to 5 do begin
TE:= TEdit.Create(Self);
with TE do
begin
Name:= 'Edit'+IntToStr(i);
Width:= 150;
Height:= 25;
Left:= 8;
Top:= i*25+30;
OnEnter:= EditEnter; OnExit:= EditExit; Parent:= Self;
FObjLst.Add(TE)
end;
end;
end;
procedure TForm1.btnLlamaClick(Sender: TObject);
var
i: Integer;
begin
for i:= 0 to FobjLst.Count-1 do
if Assigned(GetCmpt('Edit'+IntToStr(i+1))) then
TEdit(GetCmpt('Edit'+IntToStr(i+1))).Text:= '';
if Assigned(GetCmpt('Edit1')) then
TEdit(GetCmpt('Edit1')).Text:= 'PRUEBA DE TEXTO';
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FObjLst.Free; end;
...
Saludos.