Почему TForm.Handle является геттером вместо поля?
Недавно я отлаживал сложную ошибку. Это было вызвано доступом к несуществующимForm.Handle
(одета указатель). Ошибка обнаружилась довольно неожиданно для меня - доступ к формамHandle
вызвал изменение размеров и перерисовку.
Я бы ожидал доступаForm.Handle
по указателю мусора просто вернул бы мусор THandle. Ожидая, чтоHandle
создается один раз при создании формы и остается неизменным до тех пор, пока форма не будет уничтожена.
Почему это так, чтоTForm.Handle
не поле, которое инициализируется при создании формы и доступно через
property Handle: Integer read FHandle;
, но добытчик
property Handle: Integer read GetHandle;
который создает дескриптор и даже окно (CreateWnd
) при первом доступе?