Zitat:
aber warum führt "self.free" zwangsweise zu einem abstrakten Fehler ?!?
Weil es ein Logik Fehler von dir war. Man sollte nie die Methode Free in einem Objekt aufrufen , damit es sich selbst "befreit". Eine Klasse wird immer von eine Andere "befreit" (oder von einem Thread), aber nicht in sich selbst.
So geht das:
Delphi-Quellcode:
var
[b] Form1: TForm1; [/b]
[b] Form2: TForm1; [/b]
procedure [b]TForm1[/b].Button1Click(Sender: TObject);
begin
[b]Form2[/b].Free;
end;
Oder umgegehert.
Zwar wird es keine Exep. geben im Fall dass du so was schreibst:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
self.Free; // Oder nur Free
end;
Aber MainThread bleibt immer noch da, wird nicht beendet, weil das ganze die Logik von
VCL nicht folgt.