Grille d’affichage des propriétés
La fenêtre Propriétés affiche les champs d’une grille. La colonne de gauche contient les noms de propriétés ; la colonne de droite contient les valeurs de propriété.
Utiliser la grille
La liste à deux colonnes affiche les propriétés indépendantes de la configuration qui peuvent être modifiées au moment du design et leurs paramètres actuels. Notez que toutes les propriétés peuvent ne pas être affichées. Une propriété peut être définie comme masquée, par exemple, en implémentant la HideProperty méthode. Plus précisément, pour masquer les propriétés qui ont des propriétés enfants :
Définissez le
pfDisplay
paramètre surFALSE
DisplayChildProperties .Définissez le
pfHide
paramètre surTRUE
HideProperty .
Pour envoyer des informations à la fenêtre Propriétés, l’IDE utilise ISelectionContainer. ISelectionContainer est appelé par VSPackages pour chaque fenêtre qui contient des objets sélectionnables avec des propriétés associées à afficher dans la fenêtre Propriétés . Explorateur de solutions’implémentation des ISelectionContainer appels GetProperty
à l’aide de __VSHPROPID. VSHPROPID_BrowseObject dans votre hiérarchie de projet pour acquérir les objets pouvant être parcourus dans la hiérarchie.
Si votre VSPackage ne prend pas en charge __VSHPROPID. VSHPROPID_BrowseObject, l’IDE tente d’utiliser GetProperty la valeur de __VSHPROPID. VSHPROPID_SelContainer que l’élément de hiérarchie ou les éléments fournissent.
Votre projet VSPackage n’a pas besoin de créerISelectionContainer, car le package de fenêtre fourni par l’IDE qui l’implémente (par exemple, Explorateur de solutions) construit en ISelectionContainer son nom.
ISelectionContainer se compose de trois méthodes appelées par l’IDE :
CountObjects contient le nombre d’objets sélectionnés à afficher dans la fenêtre Propriétés .
GetObjects retourne les
IDispatch
objets sélectionnés à afficher dans la fenêtre Propriétés .SelectObjects permet à l’un des objets retournés par GetObjects être sélectionnés par l’utilisateur. Cela permet à VSPackage de mettre à jour visuellement la sélection affichée pour l’utilisateur dans l’interface utilisateur.
La fenêtre Propriétés extrait des informations des IDispatch
objets pour récupérer les propriétés en cours de navigation. Le navigateur Properties utilise IDispatch
pour demander à l’objet quelles propriétés il prend en charge en interrogeant ITypeInfo
, qui est obtenu à partir de IDispatch::GetTypeInfo
. Le navigateur utilise ensuite ces valeurs pour remplir la fenêtre Propriétés et modifier les valeurs des propriétés individuelles affichées dans la grille. Les informations sur les propriétés sont conservées dans l’objet lui-même.
Étant donné que les objets retournés prennent en charge IDispatch
, l’appelant peut obtenir des informations telles que le nom de l’objet en appelant ou IDispatch::Invoke
ITypeInfo::Invoke
avec un identificateur de répartition prédéfini (DISPID) qui représente les informations souhaitées. Les DISPID déclarés sont négatifs pour s’assurer qu’ils ne sont pas en conflit avec les identificateurs définis par l’utilisateur.
La fenêtre Propriétés affiche différents types de champs en fonction des attributs des propriétés spécifiques d’un objet sélectionné. Ces champs incluent des zones de modification, des listes déroulantes et des liens vers des boîtes de dialogue d’éditeur personnalisées.
Les valeurs contenues dans une liste énumérée sont récupérées par une GetObjects requête à
IDispatch
. Les valeurs obtenues à partir d’une liste énumérée peuvent être modifiées dans la grille des propriétés en double-cliquant sur le nom du champ, ou en cliquant sur la valeur et en sélectionnant la nouvelle valeur dans la liste déroulante. Pour les propriétés qui ont des paramètres prédéfinis à partir de listes énumérées, double-cliquez sur le nom de la propriété dans la liste Propriétés pour parcourir les choix disponibles. Pour les propriétés prédéfinies avec seulement deux choix, tels que true/false, double-cliquez sur le nom de la propriété pour basculer entre les choix.Si HasDefaultValue c’est
false
le cas, indiquant que la valeur a été modifiée, la valeur est affichée en gras. CanResetPropertyValue est utilisé pour déterminer si la valeur peut être réinitialisée à la valeur d’origine. Dans ce cas, vous pouvez revenir à la valeur par défaut en cliquant avec le bouton droit sur la valeur et en choisissant Réinitialiser dans le menu affiché. Sinon, vous devez revenir manuellement à la valeur par défaut. IVsPerPropertyBrowsing vous permet également de localiser et de masquer les noms des propriétés affichées au moment du design, mais n’affecte pas les noms de propriétés affichés pendant l’exécution.Cliquer sur le bouton de sélection (...) affiche une liste de valeurs de propriété à partir de laquelle l’utilisateur peut sélectionner (par exemple, un sélecteur de couleurs ou une liste de polices). IProvidePropertyBuilder fournit ces valeurs.