Nun muss ich aber das jeweilige Form zerstören. Wenn ich Self.Free aufrufe, passiert entweder gar nix, oder aber ich erhalte eine
Exception mit div. SpeicherAdressen, die mir nicht weiterhelfen. Liegt es daran, dass der Button den Tod seines Parents aufruft und sich der Code selbst dabei überholt?
Wenn ich das Form vom MainForm aus freigebe, ist alles supi. Deshalb habe ich versucht, diese Routine (des MainForms) vom SubForm aus aufzurufen. Ich glaube aber, aufgrund weiterer Fehlermeldungen, dass das noch nicht des Rätsels Lösung ist.
Was ist Ursache für dieses Problem und wie kann ich es fixen?
Ich bin mir nicht sicher, ob ich verstanden habe, was Du da machst. Du erzeugst Objekte vom Typ Tdt_panel auf einer Scrollbox. Tdt_panel ist als class(TPanel) definiert, nehme ich mal an. Also erzeugst du keine Forms, sondern Panels. Das ist schon ein großer Unterschied, bitte korrekte Terminologie benutzen, sonst versteht dich hier keiner.
Du könntest beim Klick auf den Schließen-Button (der Teil der Klasse Tdt_panel ist, nehme ich an) lediglich ein Flag setzen (KannGeloeschtWerden:=true) und das MainForm mit SendMessage benachrichtigen dass ein Panel gelöscht werden soll. Das MainForm geht dann die Panels durch und löscht die mit dem Flag.