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.
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?