Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Normalement, les feuilles de propriétés que vous créez seront modales. Lorsque vous utilisez une feuille de propriétés modale, l’utilisateur doit fermer la feuille de propriétés avant d’utiliser une autre partie de l’application. Cet article décrit les méthodes que vous pouvez utiliser pour créer une feuille de propriétés non modale qui permet à l'utilisateur de laisser la feuille de propriétés ouverte tout en utilisant d'autres parties de l'application.
Pour afficher une feuille de propriétés en tant que boîte de dialogue non modale au lieu d’une boîte de dialogue modale, appelez CPropertySheet::Create au lieu de DoModal. Vous devez également implémenter des tâches supplémentaires pour prendre en charge une feuille de propriétés non modale.
L’une des tâches supplémentaires consiste à échanger des données entre la feuille de propriétés et l’objet externe qu’elle modifie lorsque la feuille de propriétés est ouverte. Il s’agit généralement de la même tâche que pour les boîtes de dialogue modeless standard. Une partie de cette tâche implémente un canal de communication entre la feuille de propriétés non modale et l’objet externe auquel les paramètres de propriété s’appliquent. Cette implémentation est beaucoup plus facile si vous dérivez une classe de CPropertySheet pour votre feuille de propriétés non modale. Cet article suppose que vous l’avez fait.
Une méthode pour communiquer entre la feuille de propriétés non modale et l'objet externe (la sélection actuelle dans une vue, par exemple) consiste à définir un pointeur de la feuille de propriétés vers l'objet externe. Définissez une fonction (appelée quelque chose comme SetMyExternalObject) dans la classe dérivée de CPropertySheet pour modifier le pointeur chaque fois que le focus change d'un objet externe à un autre. La SetMyExternalObject fonction doit réinitialiser les paramètres de chaque page de propriétés pour refléter l’objet externe nouvellement sélectionné. Pour ce faire, la SetMyExternalObject fonction doit pouvoir accéder aux objets CPropertyPage appartenant à la CPropertySheet classe.
Le moyen le plus pratique de fournir l’accès aux pages de propriétés dans une feuille de propriétés consiste à incorporer les CPropertyPage objets dans l’objet CPropertySheetdérivé. L’incorporation d’objets CPropertyPage dans l’objet CPropertySheetdérivé diffère de la conception classique des boîtes de dialogue modales, où le propriétaire de la feuille de propriétés crée les CPropertyPage objets et les transmet à la feuille de propriétés via CPropertySheet ::AddPage.
Il existe de nombreuses solutions dans l'interface utilisateur pour déterminer quand les paramètres de la feuille de propriétés non modale doivent être appliqués à un objet externe. Une alternative consiste à appliquer les paramètres de la page de propriétés actuelle chaque fois que l’utilisateur modifie n’importe quelle valeur. Une autre alternative consiste à fournir un bouton Appliquer, qui permet à l’utilisateur d’accumuler des modifications dans les pages de propriétés avant de les valider dans l’objet externe. Pour plus d’informations sur les façons de gérer le bouton Appliquer, consultez l’article Gestion du bouton Appliquer.
Voir aussi
Feuilles de propriétés
Échange de données
Utilisation des boîtes de dialogue dans MFC