Make your own free website on Tripod.com

Home
Home

--- Soumis par Dev Ashish---

Access/Office et l'opérateur AddressOf.

 

   L'opérateur AddressOf n'est pas supporté par Access/Office 97 (ni aucune version précédante). 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'addresse (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'addresse 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.