Zitat:
TAdvPanel(Hauptform.FindComponent('SatzEditPanel'+ IntToStr(PanelNr))).Free;
Eigentlich ist der Cast unnötig, da TComponent schon das Free kennt.
Hauptform.FindComponent('SatzEditPanel'+ IntToStr(PanelNr)).Free;
Was passiert hier?
(Hauptform.FindComponent('SatzEditPanel'+ IntToStr(PanelNr)) as TAdvPanel).Free;
Free wurde doch hoffentlich nirgendwo überschrieben?
Delphi-Quellcode:
if not (TObject(Hauptform)
is TForm)
then
raise Exception.Create('
Fehler');
if not (Hauptform.FindComponent('
SatzEditPanel' + IntToStr(PanelNr))
is TAdvPanel)
then
raise Exception.Create('
Fehler');
Hauptform.FindComponent('
SatzEditPanel'+ IntToStr(PanelNr)).Free;
Hast du vom 2007 mindestens eine Professional?
Wenn ja, dann schalte in den Projektoptionen die Debug-DCUs an, setze einen Haltepunkt auf das
.Free
und schau mit F7 nach, wo es knallt.
Zitat:
Also statt
TAdvPanel.Create(self)
einfach
TAdvPanel.Create(nil)
Joar, wenn das "Self" vor deinem Free freigegeben wird, dann muß es hier natürlich auch knallen, weil das Panel ja dann schon weg ist.
Delphi 2 Desktop