come si fa a distruggere (a runtime) un oggetto creato ankesso a runtime?

es ho questo codice


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var btn: TButton;
begin
btn := TBUtton.create (self);
btn.parent:= Self;
btn.left:= X;
btn.top:= Y;
btn.Name := 'bottone'+inttostr(count);
count:=Count+1;
end;

variabile count:integer; (privata)

come si fa a fare in modo ke premendo un pulsante tutti i pulsanti vengano distrutti?

es.

for i:=1 to count do
begin
s:= 'bottone'+inttostr(i);
Freeandnil(s);
end;
(questo codice da errore di violazione)