uses clipbrd;
const
xVersatz = 20;
yVersatz = 10;
zahl: integer = 1;
procedure TForm1.Button3Click(Sender: TObject);
var
tmp: TButton;
oc: TNotifyEvent;
tcn: TComponentName;
begin
tmp := Button3;
tcn := Button3.Name;
oc := Button3.onClick;
RegisterClasses([TButton]);
Clipboard.SetComponent(Button3);
Button3.name := '';
Clipboard.GetComponent(Self, Self);
UnRegisterClasses([TButton]);
Button3.top := Button3.top + zahl * yVersatz;
Button3.left := Button3.left + zahl * xVersatz;
Button3.onClick := oc;
Button3.Caption := 'NButton' + inttostr(zahl);
inc(zahl);
Button3.name := Button3.Caption;
tmp.name := tcn;
end;