Ich habe zu selbstzerstörerischen Controls vor langer Zeit etwas in der Code-Library geschrieben.
klick
Im Gegensatz zur Lösung von Bummi schicke ich die Message an das Formular und nicht an das Control das Sterben soll.
Ich finde das besser, weil so das Control "von Aussen" gemeuchelt wird und man ausserdem den Trick mit
TPanel=Class(ExtCtrls.TPanel)
nicht braucht.
Aus heutiger Sicht würde ich nur noch das Killen etwas vereinfachen:
Delphi-Quellcode:
// Hilfsprocedure für einfacheres Morden von Controls
procedure TForm1.KillObjectByMessage(c:TObject);
begin
PostMessage(Self.Handle, WM_KILL_CONTROL, 0, Integer(c));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Sender.Free; // würde meistens eine Exception auslösen
KillObjectByMessage(Sender);
end;