Código Delphi
[-]
uses
Rtti;
var
X: Integer = 1;
Y: Integer = 1;
procedure TForm1.Button1Click(Sender: TObject);
var
LocalFoo: TObject;
Ctx: TRttiContext;
T: TRttiType;
FooParentClassName: string;
AClass: TClass;
Button2: TButton;
begin
LocalFoo.Free;
FooParentClassName := LocalFoo.ClassParent.ClassName;
AClass := LocalFoo.ClassType;
T := Ctx.GetType(AClass);
Button2 := T.GetMethod('Create').Invoke(AClass, [Self]).AsObject as TButton;
Button2.Parent := Self;
Button2.Top := Y * 10;
Button2.Left := X * 25;
Inc(X);
if Button2.Left + Button2.Width >= Width then
begin
X := 1;
Inc(Y, 4);
end;
Button2.Caption := FooParentClassName;
Button2.OnClick := Button1Click;
end;
Este codigo crea un boton con caption "TCustomButton", lo coloca en el formulario, y destruye a Button1.
A su vez, asigno el mismo evento que puedo ir invocando una y otra vez y nunca se produce ninguna Access Violation