Ver Mensaje Individual
  #7  
Antiguo 11-07-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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;

{ Devuelve el componente dado el nombre }
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  // Crear 5 Edits
  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; // Asignar evento OnEnter
      OnExit:= EditExit;   // Asignar evento OnExit 
      Parent:= Self;
      FObjLst.Add(TE)
    end;
  end;
end;

procedure TForm1.btnLlamaClick(Sender: TObject);
var
  i: Integer;
begin
  // Poner Text = '' en los TEdits creados
  for i:= 0 to FobjLst.Count-1 do
   if Assigned(GetCmpt('Edit'+IntToStr(i+1))) then
     TEdit(GetCmpt('Edit'+IntToStr(i+1))).Text:= '';
  // Poner un texto en Edit1
  if Assigned(GetCmpt('Edit1')) then
    TEdit(GetCmpt('Edit1')).Text:= 'PRUEBA DE TEXTO';
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FObjLst.Free;  // Liberar memoria
end;
...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita