Pregunta

Si creo un nuevo formulario de Delphi, engastro su evento OnResize y ejecuto la aplicación, OnResize se dispara antes de que se muestre la ventana. Lo que no sé es si esto siempre sucederá, para cualquier ventana.

(Para cualquier persona familiarizada con la API de Windows, lo he rastreado hasta la llamada de showwindow en tcustomform.showingChanged (forms.pas línea 5503 en Delphi 2007), que aparentemente desencadena un WM_SIZE... al menos para una nueva ventana sin otras propiedades establecidas. No lo he visto documentado que ShowWindow siempre dispara WM_SIZE, así que no sé si puedo contar con esto o no).

Asi que: ¿Puedo confiar en una TFORM? siempre ¿Disparar onResize cuando se muestra por primera vez? ¿O hay circunstancias (tal vez si la ventana no es resistente, tal vez si la propiedad de la posición tiene ciertos valores, etc.) donde se puede hacer no fuego antes de que se muestre la ventana por primera vez?

¿Fue útil?

Solución

No, este evento no siempre se dispara cuando se muestra el formulario, dependiendo de cosas como Borderstyle. Por ejemplo, se dispara al inicio de BSSingle, pero no por BSDialog.

Es fácil de probar. Simplemente agregue algún código de registro al evento OnResize del formulario principal, cambie el estilo BorderSty y ejecute su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top