Créer des programmes au look "office xp"

Description

Créer des boutons du style Office XP

Introduction
Comme à chaque nouvelle version, l'interface des logiciels de Office XP (Word, Excel, ...) se sont dotés d'une nouvelle interface, notamment un changement du style des boutons de la barre d'outils. Finis les boutons "plats" qui prenaient des formes au passage de la souris. Dans Office XP, les boutons prennent un fond violet entouré d'un cadre bleu au passage de la souris.

Préparation de la feuille
Avant de commencer à coder, il faut préparer la feuille, c'est à dire créer d'abord un contrôle PictureBox dans celle-ci qui fera office du bouton. Placez-y une icône ou une image qui représentera l'action exécutée par ce bouton (par exemple un feuille blanche, pour la création d'un nouveau document) à l'aide de la propriété Picture. Vous pouvez le faire en mode création, Visual Basic vous demandera alors de sélectionner le fichier à utiliser.
Mettez la propriété BorderStyle à  0 - None afin de ne pas avoir de bordure autour du contrôle.
Mettez la propriété AutoRedraw à TRUE, qui permet à Visual Basic de conserver ce que l'on dessine dans le contrôle, puique l'on va dessiner le cadre bleu.
La dernière étape consiste à modifier la propriété ToolTipText, qui permet d'afficher un texte lorsque l'utilisateur reste quelques secondes sur le contrôle. Ceci peut être utile pour connaître rapidement la fonction du bouton pour les utilisateurs non expérimentés de votre programme.

Ajout du code
Toute l'astuce porte sur les fonctions Windows SetCapture et ReleaseCapture. La première permet de capturer les déplacements de la souris afin d'obtenir sa position dans la feuille par rapport au bouton, pour savoir si l'utilisateur point la souris sur le bouton ou en dehors.
La deuxième fonction permet de libérer la capture de la souris lorsque la capture n'est plus nécessaire (souris en dehors du bouton), afin de redonner le contrôle de la souris aux autres éléments de la feuille, par exemple aux autres boutons.
Ensuite, il faut ajouter du code dans les événements MouseMove, MouseDown et MouseUp du contrôle PictureBox. Le premier se produit lorsque la souris passe sur le contrôle, ou à côté et que la capture est effectuée. Le second se produit lorsqu'un bouton est appuyé, et le troisième lorsqu'un bouton est relâché.
Ces 3 événements vont appeler 3 fonctions qui permettent d'afficher le bouton avec les couleurs et le style approprié, suivant s'il est sélectionné, appuyé ou normal.
Le code de ces 3 fonctions sont dans le fichier zip.

Pour aller plus loin
Le code fournit précédemment reste assez manipulable si vous projetez d'utiliser quelques boutons sur une feuille. Mais il peut être intéressant de créer un contrôle ActiveX permettant la création de tels boutons, si votre feuille en contient un grand nombre de boutons.

Vous pouvez aussi facilement modifier l'apparence des boutons en réponse à son état (enfoncé, normal, sélectionné) en modifiant le code de la fonction BoutonsXP_SetState.
C'est assez pratique, puisque la modification de cette fonction provoque la modification de tous les boutons de la feuille, à condition d'avoir utiliser la même fonction pour chaque bouton.
Par exemple en remplaçant la fin du code par :
 Select Case State

Case BoutonNormal
ControlPictureBox.Cls
ControlPictureBox.BackColor = vbButtonFace

Case BoutonEnfoncé
ControlPictureBox.Line (0, 0)-(ControlPictureBox.Width - 10, 0), QBColor(8), B
ControlPictureBox.Line (0, 0)-(0, ControlPictureBox.Height - 10), QBColor(8), B
ControlPictureBox.Line (ControlPictureBox.Width - 10, 0)-(ControlPictureBox.Width - 10, ControlPictureBox.Height - 10), QBColor(15), B
ControlPictureBox.Line (0, ControlPictureBox.Height - 10)-(ControlPictureBox.Width - 10, ControlPictureBox.Height - 10), QBColor(15), B

Case BoutonSélectionné
ControlPictureBox.Line (0, 0)-(ControlPictureBox.Width - 10, 0), QBColor(15), B
ControlPictureBox.Line (0, 0)-(0, ControlPictureBox.Height - 10), QBColor(15), B
ControlPictureBox.Line (ControlPictureBox.Width - 10, 0)-(ControlPictureBox.Width - 10, ControlPictureBox.Height - 10), QBColor(8), B
ControlPictureBox.Line (0, ControlPictureBox.Height - 10)-(ControlPictureBox.Width - 10, ControlPictureBox.Height - 10), QBColor(8), B

End Select
On obtient l'ancien style des boutons d'Office 2000 !

Vous pouvez ainsi permettre à l'utilisateur de choisir ses styles (Office XP/Office 2000).

Source / Exemple :


' Déclaration des deux fonctions Windows utiliséés dans le code

Public Declare Function SetCapture Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long

Conclusion :


Visitez ma page http://www.atlence.com/programs/boutons_officexp.php pour avoir un article plus complet.

N'hésitez pas à m'envoyer vos remarques, modifications à programmation@atlence.com

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.