Gestion d’un bouton rond sous Access 2002

Cet article a pour but d’expliquer l’intégration et la gestion d’un bouton rond dans un formulaire Microsoft Access 2002.

Par défaut, dans Access, un bouton de commande ressemble à ça : btnQuit    ou ça : btnQuit2.

Le choix se limite à un bouton carré ou rectangulaire avec une image ou du texte.De plus, la couleur du bouton n’est pas modifiable, on peut juste changer la couleur du texte.

Il y a 10 ans de cela, ces boutons étaient au top, maintenant on s’attend davantage à voir un bouton qui ressemble à ça :  btnQuitUp

Notre bouton rond va permettre de quitter l’application avec un message de confirmation :

If MsgBox("Quitter l’application ?", vbQuestion + vbOKCancel + vbDefaultButton1, "Confirmation de sortie") = vbOK Then

Application.Quit

End If

Intégration du bouton rond dans un formulaire :

Il nous faut 3 composants : un bouton de commande et 2 images.

On garde le bouton de commande carré que l’on nomme « btnQuit »  et on affecte la valeur oui à la propriété Transparent (Me.BtnQuit.BackStyle = True).

Ce bouton transparent va nous permettre d’exécuter le code pour quitter l’application.

On nomme « btnQuitUp » le 1er composant image.

On affecte les propriétés suivantes :

Me.btnQuitUp.Picture = "C:\Fic_win\btnQuitUp.jpg"
Me.btnQuitUp.PictureType = 0

La propriété Picture permet de pointer sur l’image suivante : btnQuitUp

La propriété PictureType permet d’incorporer et de stocker l’image dans l’objet.

On nomme « btnQuitDown » le 2ème composant image.

On affecte les propriétés suivantes :

Me.btnQuitDown.Picture = "C:\Fic_win\btnQuitDown.jpg"
Me.btnQuitDown.PictureType = 0

La propriété Picture permet de pointer sur l’image suivante : btnQuitDown

La propriété PictureType permet d’incorporer et de stocker l’image dans l’objet.

Cette 2ème image va donner du relief et l’impression d’avoir cliqué sur le bouton.

Maintenant que l’on a nos 3 composants, il ne reste plus qu’a les superposer à l’endroit voulu sur le formulaire.

L’ordre d’empilage est le suivant : « btnQuitDown » en dessous, on place « btnQuitUp » au milieu et le bouton transparent  « btnQuit » au dessus.

Au final, on doit voir uniquement « btnQuitUp » et accéder aux événements du bouton transparent « btnQuit » lorsque l’on clique sur le bouton rond.

Gestion du bouton rond :

Le but est d’afficher « btnQuitDown » lorsque l’on appuie sur le bouton via le clic gauche de la souris et d’afficher « btnQuitUp » lorsque l’on arrête d’appuyer sur le clic gauche.

Le fait de passer d’une image à l’autre va donner l’impression d’avoir cliqué sur un bouton.

Pour ce faire, on n’utilise pas l’événement « Sur clic » du bouton transparent « btnQuit », mais on utilise les 2 événements suivants :

« Sur souris appuyée » :

Private Sub btnQuit_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

    Call MANAGE_BUTTON_DOWN(Button, X, Y)

End Sub

Et

« Sur souris relâchée » :

Private Sub btnQuit_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

    If MANAGE_BUTTON_UP(Button, X, Y) Then

        If MsgBox("Quitter l’application ?", vbQuestion + vbOKCancel + vbDefaultButton1, "Confirmation de sortie") = vbOK Then

            Application.Quit

        End If

    End If

End Sub

L’événement « Sur souris appuyée » appelle la procédure suivante :

Public Sub MANAGE_BUTTON_DOWN(Button As Integer, X As Single, Y As Single)

Dim strButtonName As String

Dim ctrlImg As Control

Dim X0, Y0 As Integer

   

    strButtonName = Screen.ActiveForm.ActiveControl.Name

    If Button = 1 Then 'Clic gauche

        Set ctrlImg = Screen.ActiveForm.Controls(strButtonName & "Up")

        'Coordonnées du centre du bouton:

        X0 = Int(ctrlImg.Width / 2)

        Y0 = Int(ctrlImg.Height / 2)

        '(x-x0)²+(y-y0)²<=R² Equation du disque pour vérifier qu'on a bien cliqué dans le cercle et non dans les coins du bouton

        If (X - X0) * (X - X0) + (Y - Y0) * (Y - Y0) <= X0 * X0 Then

            ctrlImg.Visible = False

            Set ctrlImg = Screen.ActiveForm.Controls(strButtonName & "Down")

            ctrlImg.Visible = True

        End If

        Set ctrlImg = Nothing

    End If

End Sub

L’événement « Sur souris relâchée » appelle la fonction suivante :

Public Function MANAGE_BUTTON_UP(Button As Integer, X As Single, Y As Single) As Boolean

Dim strButtonName As String

Dim ctrlImg As Control

Dim X0, Y0 As Integer

   

    MANAGE_BUTTON_UP = False

    strButtonName = Screen.ActiveForm.ActiveControl.Name

    Set ctrlImg = Screen.ActiveForm.Controls(strButtonName & "Up")

    If Button = 1 Then 'Clic gauche

        'Coordonnées du centre du bouton:

        X0 = Int(ctrlImg.Width / 2)

        Y0 = Int(ctrlImg.Height / 2)

        '(x-x0)²+(y-y0)²<=R² Equation du disque pour vérifier qu'on a bien cliqué dans le cercle et non dans les coins du bouton

        If (X - X0) * (X - X0) + (Y - Y0) * (Y - Y0) <= X0 * X0 Then

            MANAGE_BUTTON_UP = True

        End If

    End If

    ctrlImg.Visible = True

    Set ctrlImg = Screen.ActiveForm.Controls(strButtonName & "Down")

    ctrlImg.Visible = False

    Set ctrlImg = Nothing

End Function

Un commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.