Self ist ein "unsichtbarer" Parameter in allen Klassen-Methoden.
Nur bei class procedure/function ist der Self-Parameter nicht die Instanz, sondern der Klassentyp.
Und statische Klassenmethoden (class procedure name(); static;
) haben garkein Self, womit sie praktisch genauso wie "normale" Prozeduren sind.
Delphi-Quellcode:
procedure TForm2.FormClose(Self: TForm2; Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
...
end;
Und nun überleg mal, warum es nichts bringt diesem Parameter etwas zuzuweisen (kein
(var Self: TForm2; ...
).
Die Form selber weiß von der externen Variable Form2 überhaupt nichts.
Und sie weiß auch nicht, ob es sonstwo noch Variablen gibt. Und es wird auch nirgendwo verwaltet ob und welche Variablen es irgendwo gibt, in denen eventuell eine Instanz dieser Klasse drin abgelegt ist.