¿Por qué TForm.Handle es un captador en lugar de un campo?
Estaba depurando un error complicado recientemente. Fue causado por acceder a un no existenteForm.Handle
(puntero de basura). El error se reveló de una manera bastante inesperada para mí: acceder a los formulariosHandle
causó cambios de tamaño y repintado.
Esperaría accederForm.Handle
por un puntero de basura solo devolvería algo de basura THandle. Esperando que elHandle
se crea una vez en la creación del formulario y permanece igual hasta que se destruye el formulario.
¿Por qué es así?TForm.Handle
no es un campo que se inicializa en la creación del formulario y se accede a través de
property Handle: Integer read FHandle;
, pero es un captador
property Handle: Integer read GetHandle;
que crea la manija e incluso la ventana (CreateWnd
) en el primer acceso?