Du schnippelst dem Button ja auch den Boden unter den Füßen weg. Genauergesagt befindet sich der Knopf noch in einer Methode und Du schmeißt ihn auf den Müll. Das geht natürlich nicht.
Schick dem Formular per PostMessage eine benutzerdefinierte Message. Der Message-Handler des Formulares gibt dann das Panel frei.
Delphi-Quellcode:
Const
WM_DESTROYPANEL = WM_USER+1;
Type
TMyForm =
Class (TForm)
...
Procedure CMDestroyPanel(
Var Msg : TMessage);
message WM_DESTROYPANEL;
...
End;
Procedure TMyForm.CMDestroyPanel(
Var Msg : TMessage);
Begin
FreeAndNil (ThePanel);
End;
Procedure TMyForm.ButtonClick (Sender : TObject);
Begin
PostMessage(
Handle,WM_DESTROYPANEL,0,0);
End;