Hallo maximov,
danke für die Idee! Für den speziellen Fall, könnte man das tatsächlich mit einem PostMessage machen, weil die Ereignissbehandlungsroutine durch die selbe Queue aufgerufen worden ist.
Eine Lösung könnte so implementiert
Delphi-Quellcode:
const
WM_FREEVCLCONTROL = WM_USER+42;
type
TForm1 = class(TForm)
//...
private
procedure WMFreeVCLControl(var Message: TMessage);message WM_FREEVCLCONTROL;
//...
end;
procedure TForm1.WMFreeVCLControl(var Message: TMessage);
begin
Assert( Message.WParam<>0 );
TObject(Message.WParam).Free;
end;
und dann von Deinem Click-Event so verwendet werden:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(
Handle, WM_FREEVCLCONTROL, Integer(Sender), 0);
end;