Warum ist TForm.Handle ein Getter anstelle eines Feldes?

Ich habe kürzlich einen komplizierten Fehler behoben. Es wurde durch den Zugriff auf ein nicht existierendes @ verursacForm.Handle (fehlerhafter Zeiger). Der Fehler hat sich für mich auf ziemlich unerwartete Weise gezeigt - beim Zugriff auf FormsHandle hat Größenänderungen und Neuanstriche verursacht.

ch würde erwarten, auf @ zuzugreifForm.Handle von einem Müll Zeiger würde nur einige Müll THandle zurückgeben. Erwarten, dass dasHandle wird einmal bei der Formularerstellung erstellt und bleibt so lange erhalten, bis das Formular zerstört wird.

Die Frag

Warum ist es so, dassTForm.Handle ist kein Feld, das bei der Formularerstellung initialisiert wird und über @ aufgerufen wi

property Handle: Integer read FHandle;

, aber ist ein Getter

property Handle: Integer read GetHandle;

das erstellt das Handle und sogar das Fenster CreateWnd) beim ersten Zugriff?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage