Есть класс TObjectList.
У него есть свойство - OwnObjects. Тогда достаточно просто удалить объект из этого класса и объект будет удален.
Кнопка - для примера.
Код:
type
TForm1 = class(TForm)
...
private
FList : TObjectList;
...
end;
...
procedure TForm1.FromCreate(Sender : TObject);
begin
FList := TObjectList.Create(True);
end;
procedure TForm1.FromDestroy(Sender : TObject);
begin
FList.Free;
end;
procedure TForm1.CreateButton(ACaption : String);
var
AButton : TButton;
begin
AButton := TButton.Create(Nil); // !! Важно !! Если классы свои - то пофиг.
AButton.Caption := ACaption;
FList.Add(AButton);
AButton.Parent := Self; // Это для визуальных контролов. Надо же ее показать :)
end;
// Удаляем по заголовку, просто пример.
procedure TForm1.DeleteButton(ACaption : String);
var
I : Integer;
begin
For I := FList.Count-1 DownTo 0 Do
If (Flist[i] As TButton).Caption = ACaption Then FList.Delete[i];
end;