APIs:
AddressOf |
Author(s) Dev Ashish |
|
L'opérateur AddressOf n'est pas supporté par
Access/Office 97 (ni aucune version précédente). Il y a de fortes chances cependant
qu'il le soit en VBA 2000, ou Office 2000.
Nonobstant, Ken Getz et Michael Kaplan, dans Microsoft Office and VBA Developer Magazine,
ont publié une méthode non documentée pour obtenir l'adresse (pointeur) d'une
procédure dans un environnement VBA.
Alors que le code de AddressOf est disponible sur le site d'
Informant, je vous aviserais de vous procurer le numéro du magazine traitant de ce sujet
(May, 1998) et de lire l'article détaillé relatif à ce code pour vous mettre au
courant de quelques aspects dont vous préférerez sagement prendre conscience.
AddressOf, un opérateur standard avec VB 5, peut être utilisé
pour passer l'adresse d'une fonction définie par l'utilisateur à une fonction API
nécessitant un pointeur à une fonction, tel que pour les appel-en-retour (CallBack). On
peut également ainsi sous-classer un formulaire Access pour en accroître la
fonctionnalité. (Sous classer est une technique nous permettant de se saisir d'un message
de Windows avant que ce message n'atteigne effectivement le formulaire ou le contrôle
auquel il est destiné.)
Avertissement:
(1) AddressOf est totalement non supporté par Microsoft sous Office 97.
L'utiliser à vos propres risques et périls!!
(2) Entrer dans le mode de déverminage n'est pas recommandé car il
risque fort bien de créer des problèmes (GPFs etc.).
(3) Soyez certain de sauvegarder votre travail fréquemment avant
d'exécuter un code contenant cet opérateur. L'utilisation de cet opérateur ajoute
une instabilité dans votre application car il y a plusieurs possibilités que quelque
chose ne tourne pas comme prévu. Cependant, une fois que le système fonctionne bien,
vous ne devriez pas avoir de problème par la suite.
(4) Utiliser un traitement " On Error Resume Next" au début
de chaque fonction utilisée comme call-back. De cette façon, les erreurs ne se
propageront pas à la fonction qui a eu recours à elle.
(5) Soyez attentif aux ByVal ou aux ByRef lorsque vous
passez des arguments, autrement, il ne se passera probablement rien de bon.
|