Control del botón Aplicar
Las hojas de propiedades tienen una capacidad de la que carecen los cuadros de diálogo estándar: permiten al usuario aplicar los cambios realizados antes de cerrar la hoja de propiedades. Esto se hace mediante el botón Aplicar. En este artículo se explican los métodos que se pueden usar para implementar esta característica correctamente.
Los cuadros de diálogo modales suelen aplicar la configuración a un objeto externo cuando el usuario hace clic en Aceptar para cerrar el cuadro de diálogo. Lo mismo ocurre con una hoja de propiedades: cuando el usuario hace clic en Aceptar, se aplica la nueva configuración en la hoja de propiedades.
Pero es posible que quiera permitir que el usuario guarde la configuración sin tener que cerrar el cuadro de diálogo de la hoja de propiedades. Esta es la función del botón Aplicar. El botón Aplicar aplica la configuración actual de todas las páginas de propiedades al objeto externo, en lugar de aplicar solo la configuración actual de la página activa actualmente.
De manera predeterminada, el botón Aplicar siempre está deshabilitado. Debe escribir código para habilitar el botón Aplicar en los momentos adecuados, y debe escribir código para implementar el efecto de Aplicar, como se explica a continuación.
Si no quiere ofrecer la funcionalidad Aplicar al usuario, no es necesario quitar el botón Aplicar. Puede dejarlo deshabilitado, lo que será habitual en las aplicaciones que usan la compatibilidad con hojas de propiedades estándar disponible en versiones futuras de Windows.
Para notificar una página como en modificación y habilitar el botón Aplicar, llame a CPropertyPage::SetModified( TRUE )
. Si alguna de las páginas notifica que se está modificando, el botón Aplicar permanece habilitado, independientemente de si se ha modificado la página activa actualmente.
Debe llamar a CPropertyPage::SetModified siempre que el usuario cambie cualquier configuración de la página. Una manera de detectar que un usuario cambia una configuración en la página es implementar controladores de notificación de cambios en cada uno de los controles de la página de propiedades, como EN_CHANGE o BN_CLICKED.
Para implementar el efecto del botón Aplicar, la hoja de propiedades debe indicar a su propietario, o a algún otro objeto externo de la aplicación, que aplique la configuración actual en las páginas de propiedades. Al mismo tiempo, la hoja de propiedades debe deshabilitar el botón Aplicar mediante una llamada a CPropertyPage::SetModified( FALSE )
en todas las páginas que han aplicado sus modificaciones al objeto externo.
Para obtener un ejemplo de este proceso, vea el ejemplo general de MFC PROPDLG.