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
[-]
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;
for i:=0 to 10 do
begin
Favorito := TLabel.Create(Self);
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; 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