Sommaire: Les contrôles ActiveX
– Comment fonctionnent les pages de propriétés
– Connexion d’une page de propriétés à un contrôle ActiveX
– Comment associer une page de propriétés à une propriété
– Utilisation de pages de propriétés standard
– Guide de conception des pages de propriétés
♣ Extrait du cours
Comment fonctionnent les pages de propriétés
Les pages de propriétés ressemblent aux feuilles, et si leur conception est donc quelque peu similaire à celle des feuilles, leur fonctionnement en est toutefois tout à fait différent.
Par exemple, quand la boîte de dialogue Pages de propriétés crée une instance d’une page de propriétés, l’événement Initialize est le premier que reçoit l’objet PropertyPage — exactement comme avec une feuille. Toutefois, contrairement à une feuille, l’objet PropertyPage ne reçoit pas d’événement Load. L’événement clé pour l’objet PropertyPage est l’événement Selection Changed.
Cette section examine les trois actions que doit exécuter votre objet PropertyPage :
– Dans l’événement Selection Changed, obtenir les valeurs de propriétés à éditer.
– Définir la propriété Changed de l’objet PropertyPage chaque fois que l’utilisateur édite une valeur de propriété.
– Dans l’événement Apply Changes, recopier sur le contrôle (ou les contrôles) sélectionnés les valeurs de propriétés éditées.
L’événement Selection Changed
L’événement Selection Changed se produit quand la page de propriétés est affichée et quand un changement se produit dans la liste des contrôles sélectionnés.Par exemple, après avoir sélectionné une instance de votre contrôle et avoir ouvert la boîte de dialogue Pages de propriétés, un développeur pourrait s’apercevoir qu’il aurait dû changer les propriétés de deux instances de votre contrôle. En cliquant sur la seconde instance tout en maintenant la touche Ctrl enfoncée, il peut ajouter une seconde instance à la liste des contrôles sélectionnés. Chacune de vos pages de propriétés recevrait alors un événement Selection Changed.
Programmation de l’événement SelectionChanged pour un contrôle unique
La chose la plus importante que vous ayez à faire dans l’événement SelectionChanged est de définir les valeurs des contrôles qui affichent les valeurs de propriétés pour édition. Considérez par exemple la page Général pour le contrôle VirtualVelociraptor (déjà illustré à la figure 10.1) :
Supposez que la propriété Age du contrôle VirtualVelociraptor utilise l’instruction Enum publique suivante :
Public Enum DinoAge
vvHatchling
vvJuvenile
vvAdult
End Enum
L’événement SelectionChanged de la page de propriétés pourrait ressembler à ceci :
Private Sub PropertyPage_SelectionChanged()
‘ Place la valeur de la propriété DinoName pour le
‘ premier contrôle sélectionné dans la zone de
‘ texte txtDinoName pour affichage et édition.
txtDinoName = SelectedControls(0).DinoName
‘ Utilise la valeur de la propriété Age du premier
‘ contrôle sélectionné pour sélectionner l’option
‘ appropriée dans le cadre d’options Age.
optAge(SelectedControls(0).Age).Value = True
‘ (Le code ci-dessus résulte du fait que les
‘ éléments de l’instruction Enum DinoAge ont les valeurs
‘ 0, 1, et 2.)
End Sub
Programmation de l’événement SelectionChanged pour des contrôles multiples
Pour déterminer si de multiples contrôles se trouvent sélectionnés, vous pouvez tester la propriété Count de la collection SelectedControls en vérifiant si elle est supérieure à 1.Pour traiter de multiples instances de contrôles sélectionnées, il est utile de diviser en deux groupes les propriétés de votre contrôle :
– Les propriétés qui peuvent recevoir sensiblement la même valeur pour de multiples contrôles. Par exemple, il est très pratique de pouvoir donner la même valeur à la propriété BackColor de plusieurs contrôles Label.
– Propriétés auxquelles il n’y aurait pas de sens de donner la même valeur pour de multiples contrôles. Par exemple, il n’est pas particulièrement utile de donner la même valeur à plusieurs contrôles Label pour la propriété Caption. Cela pourrait même être embarrassant pour l’utilisateur si cela se produisait.