I. Introduction▲
Comment changer le titre de l'application, interdire à l'utilisateur de fermer l'application brutalement en cliquant sur la croix rouge située en haut et à droite de la fenêtre Access, comment changer la couleur d'arrière-plan ou encore comment dérouler une liste simplement en cliquant dans le champ. Au travers de ce tutoriel, nous allons répondre à toutes ces petites astuces qui donnent un aspect professionnel à une application. Certaines de ces méthodes ne fonctionnent pas sur Access 2007 et d'autres sont spécifiques à Office 2010 et, sans doute, valables pour Access 2013 et 2016.
II. Agrandir/Réduire la fenêtre Access▲
Lors de l'ouverture de l'application, il peut être intéressant de faire en sorte que l'application s'agrandisse toute seule pour occuper l'ensemble de l'écran.
Copier et coller le code suivant dans un module nommé Mod_Windows.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
'Dimension de la fenêtre Access
Public Enum TypeWindows
SCMINIMIZE = &HF020&
SCMAXIMIZE = &HF030&
SCRESTORE = &HF120&
End Enum
' Déclarations
Const WM_SYSCOMMAND As Long = &H112
Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" ( _
ByVal hwnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Function WindowsDimension(WindowsSCAs TypeWindows) As Boolean
Dim hwnd As Long
hwnd = Application.hWndAccessApp
If hwnd <> 0 Then
PostMessage hwnd, WM_SYSCOMMAND, WindowsSC, 0
WindowsDimension = True
Else
' Fenêtre pas trouvée
WindowsDimension = False
End If
End Function
Pour appeler le code :
Call WindowsDimension(SCMAXIMIZE)Il pourrait être alors envisager d'appeler ce code à partir d'une macro AutoExec.
III. Désactiver la croix rouge en haut et à droite de la fenêtre Access.▲
Remarque : cette fonction ne fonctionne que pour Access 2003, 2010 et supérieur.
Pour des raisons qui n'intéressent que le concepteur d'une application, il peut être judicieux d'interdire à l'utilisateur de pouvoir cliquer sur la croix rouge située en haut et à droite de la fenêtre Access. Cela permet alors au concepteur de canaliser l'utilisateur et ainsi prévoir dans le code certaines réactions lors de la fermeture de l'application.
Copier et coller le code suivant dans un module nommé Mod_RedCross.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
' ***** API pour désactiver la croix rouge en haut et à droite de la fenêtre Access *****
Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Const MF_BYPOSITION = &H400&
Private Const MF_REMOVE = &H1000&
Private hSysMenu As Long
Public Sub RedCrossLock()
'Désactive la croix rouge en haut et à droite de la fenêtre Access
hSysMenu = GetSystemMenu(Application.hWndAccessApp, False)
Dim oCount As Long
oCount = GetMenuItemCount(hSysMenu)
Call RemoveMenu(hSysMenu, oCount - 1, MF_REMOVE Or MF_BYPOSITION)
DrawMenuBar hSysMenu
End Sub
Public Sub RedCrossActive()
'Réactive la croix rouge en haut et à droite de la fenêtre Access
hSysMenu = GetSystemMenu(Application.hWndAccessApp, True)
DrawMenuBar hSysMenu
End Sub
Pour appeler le code :
Activer la croix rouge :
Call RedCrossActiveDésactiver la croix rouge :
Call RedCrossLockIV. Titre de l'application▲
Au lieu d'avoir un beau titre Microsoft Access, nous pouvons personnaliser ce titre.
Ce paramètre peut être défini dans les options Access de la base active. Toutefois, dans le cas d'une application qui travaille alternativement sur plusieurs dorsales, il peut être utile de changer ce titre. Nous pourrions alors envisager que ce titre se trouve dans un champ de table pour chaque dorsale. Cependant, ce principe d’accès alternatif à plusieurs bases de données dorsales ne sera pas abordé dans ce tutoriel afin de rester dans le contexte du tutoriel. Cela dit, on peut également imaginer utiliser ce principe à l’ouverture de chaque formulaire.
Pour exécuter ce code, il faut activer la référence : Microsoft DAO 3.x Object Library.
Copier et coller le code suivant dans un module nommé Mod_TitleApplication.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Public Sub TitleApplication(Optional strTitle As String = "")
On Error GoTo Err
'Définir le titre l'application
Dim prp As DAO.Property
'Si pas de titre
If strTitle = "" Then
'On supprime le titre existant
CurrentDb.Properties.Delete "AppTitle"
Else
'Création du titre. Cette action déclenche l'erreur 3270
CurrentDb.Properties("AppTitle") = strTitle
End If
'Rafraîchit la barre de menu
Application.RefreshTitleBar
Fin: Exit Sub
Err:
If Err.Number = 3270 Then
'Création du titre
Set prp = CurrentDb.CreateProperty("AppTitle", dbText, strTitle)
'Ajout du titre à la propriété
CurrentDb.Properties.Append prp
Resume
End If
End Sub
Exemple pour appeler le code :
Call TitleApplication("Developpez.com")V. Couleur d'arrière-plan▲
Jusqu'à Access 2003, une fonction API permettait de changer la bien triste couleur grise d'arrière-plan d'Access. Cette fonction n'avait plus d'effet sous Access 2007. Depuis Access 2010, une propriété des options Access permet de changer l'arrière-plan en trois couleurs : bleu, gris clair ou noir. Comme les autres options, cela demande un redémarrage de l'application.
Ces valeurs de couleurs sont inscrites dans le registre et peuvent donc être modifiées par un utilisateur qui n'aurait pas accès aux options Access.
La clé de registre est la suivante : HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common. La clé Theme est une clé DWORD qui prend respectivement le 1 (bleu), 2 (gris clair) et 3 (noir).
Copier et coller le code suivant dans un module nommé Mod_BackGroundColor.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
'Couleur d'arrière-plan
Public Enum BackGroundColor
Blue = 1
Grey = 2
Black = 3
End Enum
Public Sub BackGroundColor(regValue As BackGroundColor)
On Error GoTo Err
'Modification d'une clé de registre
Dim WshShell
Dim strReg As String
'Chemin de la clé de registre
strReg = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Theme"
'Modifie le registre pour changer la couleur d'arrière-plan d'Access
Set WshShell = CreateObject("Wscript.Shell")
WshShell.RegWrite strReg, regValue, "REG_DWORD"
Set WshShell = Nothing
MsgBox "Vous devez fermer puis rouvrir l'application pour que la couleur d'arrière-plan soit appliquée."
Fin: Exit Sub
Err:
MsgBox "Le registre est verrouillé en écriture." & vbCrLf & _
"Inscription de la clé de registre impossible."
Resume Fin
End Sub
Pour appeler le code :
La valeur 1 mettra l'arrière-plan en bleu.
Call BackGroundColor(1)VI. Icône de formulaire▲
Une belle icône sur un formulaire améliore très justement le rendu final. Créer un répertoire, nommé Icone, dans le même répertoire que l'application. Placer dedans la ou les icônes. Dans notre exemple, l'icône se nomme Icone1.ico. Cette fonction permet également de mettre une icône dans le menu de l'application en haut et à gauche.
Copier et coller le code suivant dans un module nommé Mod_BackGroundColor.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
'********************** Api pour l'icône de l'application et des formulaires ********************************************
Public Declare Function LoadImage Lib "user32" Alias _
"LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, _
ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, _
ByVal un2 As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Public Const WM_GETICON = &H7F
Public Const WM_SETICON = &H80
Public Const ICON_SMALL = 0
Public Const ICON_BIG = 1 'LoadImage() image types
Public Const IMAGE_BITMAP = 0
Public Const IMAGE_ICON = 1
Public Const IMAGE_CURSOR = 2
Public Const IMAGE_ENHMETAFILE = 3 'LoadImage() flags
Public Const LR_DEFAULTCOLOR = &H0
Public Const LR_MONOCHROME = &H1
Public Const LR_COLOR = &H2
Public Const LR_COPYRETURNORG = &H4
Public Const LR_COPYDELETEORG = &H8
Public Const LR_LOADFROMFILE = &H10
Public Const LR_LOADTRANSPARENT = &H20
Public Const LR_DEFAULTSIZE = &H40
Public Const LR_LOADMAP3DCOLORS = &H1000
Public Const LR_CREATEDIBHeader = &H2000
Public Const LR_COPYFROMRESOURCE = &H4000
Public Const LR_SHARED = &H8000
Function strIcon(str As String) As String
'Fonction renvoyant le chemin de l'icône
strIcon = CurrentProject.Path & "\Icone\" & str & ".ico"
End Function
Public Function SetFormIcon(Optional Frm As String, Optional MyIcon As String) As Boolean
'Place une icône dans le menu de l'application ou dans un formulaire
Dim hIcon As Long
Dim hwnd As Long
Dim IconPath As String
IconPath = MyIcon
If Len(Dir(IconPath)) = 0 Then
SetFormIcon = False
Exit Function
Else
If Frm = "" Then
hwnd = Application.hWndAccessApp
Else
hwnd = Forms(Frm).hwnd
End If
hIcon = LoadImage(0&, IconPath, IMAGE_ICON, 16, 16, LR_LOADFROMFILE)
If hIcon <> 0 Then
Call SendMessage(hwnd, WM_SETICON, 0, ByVal hIcon)
SetFormIcon = True
End If
End If
End Function
Pour appeler le code :
Événement : Sur chargement du formulaire
Call SetFormIcon(Me.Name,strIcon(Icone1))Au chargement de l'application :
L'appel de cette fonction peut très bien être envisagé à partir d'une macro nommée AutoExec.
Call SetFormIcon(,strIcon(Icone1))VII. Déroulement d'une liste▲
Il n'est pas toujours très pratique de viser la petite flèche d'une liste déroulante pour la dérouler. Il est effectivement plus simple de pouvoir cliquer dans le champ de la liste afin qu'elle se déroule. Quelques lignes de code permettent cela.
Copier et coller le code suivant dans un module nommé Mod_List.
2.
3.
4.
5.
6.
7.
8.
9.
Sub DropDownlList(Button As Integer, Ctrl As Control)
'Si clic sur bouton gauche
If Button = 1 Then
'On déroule la liste
Ctrl.Dropdown
End If
End Sub
Pour appeler le code :
Événement : Sur souris appuyée du formulaire :
2.
3.
4.
5.
6.
Private Sub MyListDeroulante_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Déroule la liste sur clic gauche
Call DropDownlList(Button, Me.MyListDeroulante)
End Sub
VIII. Limiter une liste▲
Dans le même ordre d'idée, il est parfois nécessaire que l'utilisateur ne puisse sélectionner que des éléments de la liste. Contrairement à Vb.Net, Access ne verrouille pas la liste déroulante lorsque sa propriété « Limiter à liste » est définie à Oui. Le principe consiste donc à interdire la saisie au clavier. Toutefois, il faut pouvoir laisser l'utilisateur naviguer entre les champs avec les touches de déplacement du clavier et notamment la touche Tab. Également, il peut être nécessaire de laisser la possibilité à l'utilisateur de supprimer la valeur de champ afin qu'il soit vide.
Copier et coller le code suivant dans un module nommé Mod_List.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Enum TabDel
TouchTab = 1
TouchTabDel = 2
End Enum
Sub RestrictedList(KeyCode As Integer, Optional onTouch As TabDel = 2)
If onTouch = 1 Then
'Si touche appuyée <> de Tab
If KeyCode <> 9 Then
KeyCode = 0 'Interdit la saisie au clavier
End If
Else
'Si touche appuyée <> de Tab et <> de Suppr(Del)
If KeyCode <> 9 And KeyCode <> 46 Then
'Interdit la saisie au clavier
KeyCode = 0
End If
End If
End Sub
Pour appeler le code :
Événement : Sur touche appuyée du contrôle liste déroulante :
Private Sub MyListDeroulante_KeyDown(KeyCode As Integer, Shift As Integer)
'Liste limitée, la touche Tab peut être utilisée
Call RestrictedList(KeyCode, 1)
End SubOu :
2.
3.
4.
5.
6.
Private Sub MyListDeroulante_KeyDown(KeyCode As Integer, Shift As Integer)
'Liste limitée, les touches Tab et Suppr (Del) peuvent être utilisées
Call RestrictedList(KeyCode, 2)
End Sub
IX. Ajouter une valeur à une liste▲
Dans une application, il peut être nécessaire que l'utilisateur puisse enrichir ses propres listes.
Ces listes sont issues de tables.
Nous allons voir comment proposer à un utilisateur d'ajouter une valeur à une liste.
La liste déroulante doit avoir la propriété Limiter à liste définie à Oui.
Événement : Sur absence dans liste de la liste déroulante :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub List_AddValueList_NotInList(NewData As String, Response As Integer)
On Error GoTo Err
'Message pour ajouter une valeur à la liste
If MsgBox("Souhaitez-vous ajouter cette nouvelle valeur à la liste ?", _
vbYesNo + vbQuestion + vbDefaultButton2, "Ajout d'une nouvelle valeur") = vbYes Then
DoCmd.RunSQL "INSERT INTO Tbl_List ( Tbl_ValList ) SELECT """ & NewData & """;"
Response = acDataErrAdded
Else
Response = acDataErrContinue
Me.List_AddValueList.Undo
End If
Fin: Exit Sub
Err:
MsgBox "Erreur : " & Err.Number & vbCrLf & Err.Description
Resume Fin
End Sub
X. Texte en majuscules▲
Dans certains cas, la saisie d'un texte doit impérativement être en majuscules.
Par exemple, par convention, et même si aucune règle ne l'impose, les noms de famille sont écrits en majuscules afin de les distinguer des prénoms, ce qui pourrait porter à confusion (ex. : Guy Michel). De plus, le manuel de typographie française élémentaire de Yves PERROUSSEAUX précise, dixit l'Académie française, qu'à partir du moment où une machine le permet, les majuscules doivent avoir leur accentuation. Or, pour pouvoir accentuer des majuscules, il faut connaître un certain nombre de raccourcis clavier. Ce qui est loin d'être le cas pour tout le monde. Cette fonction va donc simplifier la saisie des données par les utilisateurs puisque même si le clavier est en minuscules, les caractères seront convertis en majuscules et ce, avec leur accentuation.
Événement : Sur touche activée du contrôle :
2.
3.
4.
5.
6.
Private Sub Tbl_TxtMajuscule_KeyPress(KeyAscii As Integer)
'On convertit chaque caractère frappé en majuscule
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
XI. Initiale d'un mot en minuscule▲
À la suite du sujet précédent, il faut parfois imposer à l'utilisateur de commencer son texte à saisir avec une initiale minuscule.
En effet, après un mot suivi de : le mot doit commencer par une minuscule.
Par défaut, dans une application, il y a une étiquette avec un titre suivi de :.
Ce même titre sera généralement employé dans l'état de l'aperçu avant impression.
La fonction suivante vérifie donc si, lors de la saisie, le curseur est sur le 1er caractère et si c'est le cas, le caractère est converti en minuscule.
Cela dit et malgré cette règle typographique, il peut arriver dans certain cas où un mot doit impérativement commencer par une initiale majuscule.
Dans ce cas, saisir un 1er caractère, puis un second, placer le curseur au début du second caractère, puis effacer le 1er caractère avec la touche Retour.
Événement : Sur touche activée du contrôle :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Tbl_InitialeMinuscule_KeyPress(KeyAscii As Integer)
'Si ce n'est pas un chiffre
If KeyAscii > 64 Then
'On vérifie si on se trouve au premier caractère
If Me.Tbl_InitialeMinuscule.SelStart = 0 Then
'La 1re lettre est convertie en minuscule
KeyAscii = Asc(LCase(Chr(KeyAscii)))
End If
End If
End Sub
XII. Caractère interdit▲
Dans certains cas, il est nécessaire d'imposer les caractères de saisie qui peuvent être utilisés.
Cette fonction permet de définir d'une liste de caractères autorisés.
Événement : Sur touche activée du contrôle :
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Tbl_CaractereLimite_KeyPress(KeyAscii As Integer)
'N'autorise que les caractères de la liste ainsi que les touches Tab, Suivant, Enter
If InStr("1234567890abcdefghijklmnopqrstuvwxyz-" & Chr(8) & Chr(9) & Chr(13), Chr$(KeyAscii)) = 0 Then
MsgBox "Seules les lettres de l'alphabet, " & _
"les chiffres de 0 à 9 et le caractère spécial « « - » sont autorisés", , "Caractère interdit"
KeyAscii = 0
End If
End Sub
XIII. Limiter la longueur d'un texte▲
Si un champ est défini à 255 caractères dans une table, nous pourrons saisir 255 caractères dans ce même champ de formulaire même s'il ne fait que 2 cm de longueur. Se pose alors le problème de l'aperçu avant impression. En effet, dans ce cas, le texte sera tronqué et le document ne reflétera pas ce que l'on souhaite réellement présenter. Cette fonction permet de limiter la longueur du texte en fonction de la longueur de champ de formulaire.
Copier et coller le code suivant dans un module nommé Mod_LimitTextToControl.
Ne parlant anglais, vous m'excuserez si quelques commentaires ne sont pas traduits.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
Const LOGPIXELSX = 88
Const LOGPIXELSY = 90
Const TWIPSPERINCH = 1440
Type Size
cx As Long
cy As Long
End Type
Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, _
ByVal nIndex As Long) As Long
Declare Function GetFocus Lib "user32" () As Long
Declare Function GetTextExtentPoint Lib "gdi32" Alias _
"GetTextExtentPointA" (ByVal hDC As Long, ByVal lpsz As String, _
ByVal cbString As Long, lpSIZE As Size) As Long
Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, _
ByVal hDC As Long) As Long
Private Sub ConvertPixelsToTwips(X As Long, Y As Long)
Dim hDC As Long, hwnd As Long, RetVal As Long
Dim XPIXELSPERINCH As Long, YPIXELSPERINCH As Long
'Récupère le nombre actuel de pixels par pouces, dépendant de la résolution.
hDC = GetDC(0)
XPIXELSPERINCH = GetDeviceCaps(hDC, LOGPIXELSX)
YPIXELSPERINCH = GetDeviceCaps(hDC, LOGPIXELSY)
RetVal = ReleaseDC(0, hDC)
' Transforme la mesure en twips.
X = (X / XPIXELSPERINCH) * TWIPSPERINCH
Y = (Y / YPIXELSPERINCH) * TWIPSPERINCH
End Sub
Sub LimitTextToControlWidth(KeyAscii As Integer)
Dim AC As Control
Dim Txt As String
Dim TxtWidth As Long, SpaceWidth As Long
Dim hwnd As Long, hDC As Long
Dim lpSIZE As Size
Dim RetVal As Long
' Sortie si un caractère non imprimable est tapé
If KeyAscii < 32 Then Exit Sub
' Déclare le contrôle actif
Set AC = Screen.ActiveControl
' Sélectionne le contrôle texte
Txt = AC.Text & ""
' Ajoute le caractère tapé dans le texte
If KeyAscii > 32 Then
Txt = Left(Txt, AC.SelStart)
Txt = Txt & Chr$(KeyAscii)
Txt = Txt & Mid(Txt, AC.SelStart + 1 + AC.SelLength)
End If
hwnd = GetFocus()
hDC = GetDC(hwnd)
' Convertit la largeur du texte en Twips.
RetVal = GetTextExtentPoint(hDC, Txt, Len(Txt), lpSIZE)
ConvertPixelsToTwips lpSIZE.cx, lpSIZE.cy
TxtWidth = lpSIZE.cx
'Convertit la largeur des espaces en Twips
RetVal = GetTextExtentPoint(hDC, " ", 1, lpSIZE)
ConvertPixelsToTwips lpSIZE.cx, lpSIZE.cy
SpaceWidth = lpSIZE.cx
' Y a-t-il des espaces à traiter ?
If AC.SelStart + 1 > Len(Txt) Then
TxtWidth = TxtWidth + ((AC.SelStart + 1 - Len(Txt)) * SpaceWidth)
End If
' Si largeur du texte >= à la largeur du champ
If (TxtWidth + (SpaceWidth / 2)) >= AC.Width Then
Beep
' Arrêt de la saisie
KeyAscii = 0
End If
End Sub
Pour appeler le code :
Événement : Sur touche activée du contrôle :
2.
3.
4.
5.
6.
Private Sub Tbl_LimitText_KeyPress(KeyAscii As Integer)
'Limite la saisie à la longueur du champ
Call LimitTextToControlWidth(KeyAscii)
End Sub
XIV. Changer le curseur de la souris au survol d'un bouton▲
Access 2010 propose enfin de pouvoir animer les boutons en définissant une forme ou une couleur différente au survol ou non dudit bouton. Cela dit, il manque la possibilité de changer l'aspect du curseur au survol du bouton.
Copier et coller le code suivant dans un module nommé Mod_Cursor.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
'32512 flèche
'32513 curseur en I
'32514 sablier
'32515 croix
'32516 flèche vers le haut
'32640, 32642, 32643, 32644, 32645, 32646 doubles flèches de redimensionnement
'32648 stationnement interdit
'32650 flèche sablier
Public Const HandCursor = 32649&
Public Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long
Public Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" _
(ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
Sub BtnHandCursor()
'Curseur Main lorsque la souris arrive sur le bouton
Dim lHandle As Long
lHandle = LoadCursor(0, HandCursor)
If (lHandle > 0) Then SetCursor lHandle
End Sub
Pour appeler le code :
Événement : Sur touche déplacée du bouton :
2.
3.
4.
5.
6.
Private Sub Btn_Icone_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Affiche une main au survol du bouton
Call BtnHandCursor
End Sub
XV. Conclusion▲
Au travers de toutes ces petites astuces, une application peut avoir son ergonomie nettement améliorée permettant ainsi d'obtenir un résultat de qualité.
XVI. Remerciements▲
Nous tenons à remercier marsouin_89 pour la rédaction de ce tutoriel, Chrtophe et Gaby277 pour la relecture technique et Claude Leloup pour la correction orthographique.



