Ver Mensaje Individual
  #2  
Antiguo 25-11-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Reputación: 22
Caro Va por buen camino
Hola rruffino, para aceder a un componente creado en tiempo de ejecución, puedes utilizar FindCompoenent:

Eliminamos el Label con nombre "Favorito_2"

Código Delphi [-]
var
 aLabel : TComponent;
begin
 aLabel := FindComponent('Favorito_2');
 if Assigned(aLabel) then
  aLabel.Free;

Parar borrar todos los componentes lo haces con el codigo que ya tienes, pero mejor si los creas dentro de un contenedor (Panel...) y asi borras solo lo que tienes en el contenedor, porque si no tendrías que guardar en algún lado los creados en ejecución para así solo borrar esos componentes o ponerle Tag=-1 y borras solo los que tienen ese valor (esto recorriendo tus componentes).

Para asignar eventos:

Código Delphi [-]
 
//Mostramos su Caption al hacer click
procedure TForm1.ClickLabels(Sender: TObject);
begin
 Showmessage(TLabel(Sender).Caption);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  Favorito: TLabel;
  cant_favoritos: integer;
begin
      aTop := 0;
      cant_favoritos := 1;
      //Creamos 10 labels y le asignamos el mismo evento
      for i:=0 to 10 do
       begin
          Favorito := TLabel.Create(Self);
          //Ubicación del componente, color, etc...
          Favorito.Parent := sScrollBox_favorito;
          Favorito.Align := alTop;
          Favorito.Cursor:=crHandPoint;
          Favorito.Font.Color:=$00B23D00;
          Favorito.Caption:=DM.IBDataSet_favoritoNOMBRE.Value;
          Favorito.Name := 'Favorito_'+IntToStr(cant_favoritos);
          Favorito.Top := aTop;
          Favorito.OnClick := ClickLabels; //Asignamos el evento
          Inc(aTop,20);
          Inc(cant_favoritos);
          Favorito.PopupMenu:=PopupMenu_elim_favorito;
       end;
end;

Y para la ultima pregunta, también con FindComponent.

Código Delphi [-]
var
 aLabel : TComponent;
begin
 aLabel := FindComponent('Favorito_2');
 if Assigned(aLabel) then
  TLabel(aLabel).Caption := 'Otro Caption';

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 25-11-2010 a las 16:23:59.
Responder Con Cita