Zitat von
Sir Rufo:
Wieso sollten da noch Methoden aufgerufen werden? ... von der
VCL?
Ja, die
VCL ist noch nicht fertig mit dem Formular.
Delphi-Quellcode:
procedure TCustomForm.Close;
// aus der VCL
var
CloseAction: TCloseAction;
begin
if fsModal
in FFormState
then
ModalResult := mrCancel
else
if CloseQuery
then
begin
if FormStyle = fsMDIChild
then
if biMinimize
in BorderIcons
then
CloseAction := caMinimize
else
CloseAction := caNone
else
CloseAction := caHide;
DoClose(CloseAction);
// hier wird das Event OnClose aufgerufen
if CloseAction <> caNone
then
if Application.MainForm = Self
then Application.Terminate
// ???
else if CloseAction = caHide
then Hide
// ***
else if CloseAction = caMinimize
then WindowState := wsMinimized
// ***
else Release;
// ***
end;
end;
Jede Zeile, die mit *** markiert ist greift auf das Formular Objekt zu.
Aber das Objekt ist ja schon freigeben und deshalb kann es in jeder dieser Zeilen zu einer Zugriffsverletzung kommen.
Bei der Zeile markiert mit ??? bin ich mir selbst nicht sicher, aber auch hier besteht potentiell die Gefahr,
dass über verschlungene Wege auf das (freigebene) Formular Objekt zugegriffen wird.