Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Accueil Access Forum Access F.A.Q Access F.A.Q VBA Tutoriels Sources Outils Livres Access TV Access 2007

Gestion de la roulette de la souris dans les formulaires (dll sans référencement)

Date de publication : 04/10/06 , Date de mise à jour : 04/10/06

Par Thierry GASPERMENT (arkham46.developpez.com/)
 

Gestion de la roulette de la souris dans les formulaires.
Utilisation d'une dll développée avec Visual C++ Express.
Ne nécessite pas de référencer la dll.

I. Introduction
II. Compatibilité
III. MouseWhellDVP VS MouseWhellDVPNoReg
IV. Licence d'utilisation
V. Comment utiliser la librairie
V-A. Avec la librairie dans le répertoire système
V-B. Avec la librairie dans un répertoire quelconque
V-C. Exemple : blocage de la roulette avec la librairie dans le répertoire de l'application
VI. Les téléchargements


I. Introduction

Utiliser la roulette de la souris dans un formulaire entraîne un changement d'enregistrement qui peut être indésirable.
En effet un utilisateur peut s'attendre à faire défiler le formulaire vers le bas, mais l'action sur la roulette de la souris passe à l'enregistrement suivant.
Cela peut être agaçant, voir très problématique car l'enregistrement est validé alors que l'utilisateur ne le souhaitait pas.

Pour pallier ce comportement on peut utiliser une librairie développée en C++.
Cette librairie est une dll simple qui ne nécessite pas d'être enregistrée.

Merci à Kikof, Dolphy35 et Tofalu pour leur aide.


II. Compatibilité

Cette librairie a été testée avec les configurations suivantes :
- Access 97 / Windows 2000 Pro
- Access 97 / Windows XP Pro
- Access 2000 / Windows 98
- Access 2002 / Window XP Pro
- Access 2003 / Windows XP Home


III. MouseWhellDVP VS MouseWhellDVPNoReg

idea Vous pouvez également trouver ici une libraire ActiveX (MouseWhellDVP) développée à l'aide de VB6.
Cette librairie permet d'ajouter un événement au formulaire, mais par contre elle nécessite d'être enregistrée.
La librairie de cette article (MouseWheelDVPNoReg) facilite le déploiement :
Il suffit de mettre la librairie dans le répertoire système pour qu'elle fonctionne.
(On peut également mettre la librairie dans un autre répertoire moyennant quelques lignes de code supplémentaires).
Il ne faut pas la référencer dans le menu Outils --> Références.
En contrepartie, on ne peut pas programmer de comportement spécifique dans Access. Dans ce cas, il faut programmer au préalable dans la librairie en C++.
(le blocage de la roulette et le défilement vertical du formulaire sont déjà programmés dans cette librairie).


IV. Licence d'utilisation

La librairie MouseWheelDVPNoReg.dll est développée et compilée avec Microsoft Visual C++ 2005 Express Edition
Citation FAQ MSDN concernant les éditions Express

               4. Can I use Express Editions for commercial use?
                Yes, there are no licensing restrictions for applications built using the Express Editions.
Elle peut donc être utilisée gratuitement dans vos projets personnels ou professionnels.


V. Comment utiliser la librairie


V-A. Avec la librairie dans le répertoire système

Copiez le fichier MouseWheelDVPNoReg.dll dans le répertoire système de chaque PC.
(le plus souvent c'est le répertoire : C:\Windows\System32)

Ajoutez ensuite dans le module du formulaire les déclarations des procédures de la librairie.
Déclarations des procédures

Private Declare Sub MouseWheelHook Lib "MouseWheelDVPNoReg.dll" _
         (ByVal pHwnd As Long, ByVal pScrollForm As Boolean)
Private Declare Sub MouseWheelUnHook Lib "MouseWheelDVPNoReg.dll" _
         (ByVal pHwnd As Long)
Pour bloquer la roulette, appelez la fonction MouseWheelHook avec comme paramètres :
- pHwnd : l'identifiant du formulaire = Me.Hwnd
- pScrollForm : Permet de faire défiler le formulaire verticalement avec la roulette de la souris tout en empêchant le changement d'enregistrement.
  (Utile lorsqu'un formulaire en mode simple est plus haut que l'écran)
Simple blocage de la roulette

MouseWheelHook Me.Hwnd, False
Défilement vertical du formulaire avec la roulette de la souris

MouseWheelHook Me.Hwnd, True

Pour débloquer la roulette empêchant le changement d'enregistrement,, appelez la fonction MouseWheelUnHook avec comme paramètre :
- pHwnd : l'identifiant du formulaire = Me.Hwnd
Déblocage de la roulette

MouseWheelUnHook Me.Hwnd
Remarque : Il n'est pas nécessaire de débloquer la roulette à la fermeture du formulaire.


V-B. Avec la librairie dans un répertoire quelconque

Copiez le fichier MouseWheelDVPNoReg.dll sur chaque PC.


Ajoutez ensuite dans le module du formulaire les déclarations des procédures de la librairie.
Déclarations des procédures de la librairie

Private Declare Sub MouseWheelHook Lib "MouseWheelDVPNoReg.dll" _
            (ByVal pHwnd As Long, ByVal pScrollForm As Boolean)
Private Declare Sub MouseWheelUnHook Lib "MouseWheelDVPNoReg.dll" _
            (ByVal pHwnd As Long)
Puis la déclaration de l'API permettant le chargement de la librairie à partir d'un répertoire quelconque.
Déclaration de la fonction de chargement de la librairie

Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Appelez ensuite les fonctions MouseWheelHook et MouseWheelUnHook comme précédemment, en ajoutant au préalable un appel à la fonction de chargement de la librairie en précisant le chemin du fichier.

idea Un seul appel à la fonction LoadLibrary est nécessaire pour toute l'application Access.
Simple blocage de la roulette avec Access 2000 minimum et librairie dans le répertoire de l'application Access

LoadLibrary CurrentProject.Path & "\MouseWheelDVPNoReg.dll"
MouseWheelHook Me.Hwnd, False
Simple blocage de la roulette avec Access 97 minimum et librairie dans le répertoire de l'application Access

LoadLibrary Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Dir(CurrentDb.Name))) & _
            "\MouseWheelDVPNoReg.dll"
MouseWheelHook Me.Hwnd, False

V-C. Exemple : blocage de la roulette avec la librairie dans le répertoire de l'application

Voici le code à mettre dans le module d'un formulaire pour bloquer la roulette de la souris.
Le blocage se fait à l'événement Sur chargement du formulaire.
La librairie MouseWheelDVP.dll est dans le même répertoire que le fichier Access.

Private Declare Sub MouseWheelHook Lib "MouseWheelDVPNoReg.dll" _
         (ByVal pHwnd As Long, ByVal pScrollForm As Boolean)
Private Declare Sub MouseWheelUnHook Lib "MouseWheelDVPNoReg.dll" _
         (ByVal pHwnd As Long)
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" _
         (ByVal lpLibFileName As String) As Long

Private Sub Form_Load()
    LoadLibrary Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Dir(CurrentDb.Name))) & _
            "\MouseWheelDVPNoReg.dll"
    MouseWheelHook Me.Hwnd, False
End Sub

VI. Les téléchargements




Valid XHTML 1.1!Valid CSS!

Les sources présentées sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Responsable bénévole de la rubrique Access : Christophe Lessirard - Contacter par EMail :
Vos questions techniques : forum d'entraide Access - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.