mercredi 30 mai 2012

Customisez vos boutons

N'est-il pas désolant de voir MS Office évoluer esthétiquement tandis que les contrôles ActiveX restent fidèles à leur look rétro ? Prenez les boutons de formulaire par exemple : uniformément gris et stricts.

Contrôle ActiveX "CommandButton" basique

Mettez un peu d'originalité dans vos formulaires en personnalisant les boutons ... sans utiliser de contrôle CommandButton !

Sachant que pour le même volume en KiloOctets, vous pouvez indifféremment utiliser un contrôle CommandButton, Label ou Image, profitons-en pour étudier les possibilités de personnalisation.

Pour cela, créez sous MS Powerpoint un rectangle sans contour, rempli avec un dégradé de couleur comme dans les exemples ci-dessous. Avec MS Powerpoint 2007 ou 2010, vous pouvez régler précisément la position de chaque couleur du dégradé pour un meilleur rendu de reflet lumineux. Sauvegardez ce rectangle comme une image au format BMP.


Rendez-vous sur Excel et créez trois controles ActiveX de mêmes dimensions : un CommandButton, un Label et une Image. Les dimensions sont réglables dans les champs Height et Width de la fenêtre de Propriétés des contrôles.
Configurez le paramètre Picture de chacun des contrôles en sélectionnant l'image BMP que vous venez de sauvegarder. Précisez dans le paramètre PicturePosition que l'image doit être centrée dans le contrôle : saisissez la valeur 12 - fmPicturePositionCenter. Cette valeur de paramètre signifie que que si vous ajoutez du texte à votre contrôles, celui-ci apparaîtra centré devant l'image.


Pour les contrôles Label et Image, précisez la valeur du paramètre SpecialEffect permettant d'obtenir un effet bouton : saisissez la valeur 1 - fmSpecialEffectRaised.

Pour les contrôles Label et CommandButton, renseignez le paramètre Caption en saisissant le texte que vous souhaitez faire apparaître sur le bouton. Vous constaterez que le contrôle Image ne permet pas de saisir de texte. Pour l'utiliser comme bouton, il vous faudra donc penser à intégrer le texte dans l'image de fond et à régler le paramètre PictureSizeMode à la valeur 1 - fmPictureSizeModeStretch afin d'étirer l'image aux dimensions du contrôle, comme dans l'exemple ci-dessous.


D'expérience, j'ai une préférence pour le contrôle Label car il permet d'avoir un meilleur rendu.
Pour utiliser un Label comme bouton, il faut le rendre cliquable. Pour cela, vous devrez définir son apparence lorsque le bouton de souris est en appui dessus, et lorsque le bouton de souris est relevé. Nous allons donc devoir rédiger quelques lignes de code VBA pour les évènements MouseDown() et MouseUp() du Label. Ces lignes de code ne sont absolument pas volumineuses en termes d'espace disque, ce qui rend l'usage du Label d'autant plus intéressant. Rendez-vous dans l'éditeur de code, à la feuille correspondant à l'onglet actuel et saisissez le code suivant (le Label s'appelle Label1) :

Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Label1.SpecialEffect = fmSpecialEffectSunken
End Sub

Private Sub Label1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Label1.SpecialEffect = fmSpecialEffectEtched
End Sub

Voici l'effet obtenu : un bouton moderne, plat, à reflets, qui s'enfonce et se relève lorsque l'on clique dessus !


Il ne reste alors plus qu'à coder l'action à réaliser lorsque le bouton est cliqué dans la procédure Label1_Click().

Private Sub Label1_Click()
    MsgBox "Smart XL !"
End Sub

N'hésitez pas à abuser de cette méthode qui rendra vos interfaces graphiques beaucoup plus attractives !

Aucun commentaire:

Enregistrer un commentaire