DoTNeT Utiliser des delegates DotNet pour gérer des
Transcription
DoTNeT Utiliser des delegates DotNet pour gérer des
Utiliser des delegates DotNet pour gérer des événements DotNet depuis le WLangage. WinDev permet de créer et d’utiliser des assemblages DotNet. Il est donc possible d'utiliser à la fois du code DotNet et du Wlangage, en WinDev, WebDev, et WinDev Mobile. WinDev 12 permet notamment d'utiliser des delegate DotNet afin de gérer des événements. Projet d'illustration Pour illustrer l'utilisation d'un assemblage DotNet depuis une application WinDev, et plus particulièrement l'utilisation des delegates, le projet utilisé est "WD ObservateurRépertoire" (présent sur le DVD). Les manipulations décrites dans cet article reposent sur ce projet. Utilisation des delegate Définition d'un delegate Un delegate est en fait une procédure, qui peut être exécutée dans deux cas différents : • L'utilisation d'un "événement DOTNET". • L'utilisation d'une procédure callback WLangage depuis un assemblage DOTNET. L'exemple "WD ObservateurRépertoire" utilise des événements DOTNET qui permettent de monitorer un répertoire, c’est-à-dire de savoir quelles sont les opérations qui ont été effectuées sur ce répertoire. Une opération correspond à : • Une création de fichier ou de répertoire. • Un renommage de fichier ou de répertoire. • Une suppression de fichier ou de répertoire. • Ou une modification de fichier ou de répertoire. Importation d'un assemblage Pour monitorer un répertoire, il suffit d'importer l'assemblage DotNet "system". L'import d'assemblage s'effectue par le menu "Atelier .. DotNET .. Utiliser un assemblage DotNET dans le projet". Les classes définies dans l'assemblage sont automatiquement importées dans le volet WinDev correspondant. Déclarations des objets DotNet Note : DotNet est une technologie orientée objet. Dans le code d'initialisation de la fenêtre, un objet "FileSystemWatcher" est déclaré. Cette classe est définie dans l'assemblage "system" importé. Cet objet est l'objet principal, auquel sera défini ce qui doit être écouté. // La création clSurveillant:add_Created(... gpclEventHandlerAjout) // La modification clSurveillant:add_Changed(... gpclEventHandlerModif) Utilisation Pour démarrer la surveillance d'un répertoire, il suffit de : • Donner le chemin du répertoire à surveiller au membre “Path” de l'objet “FileSystemWatcher”. clSurveillant:Path =... ComplèteRep(... SC_SelecteurRépertoire) • Activer la surveillance, en mettant le membre “EnableRaisingEvents” à Vrai. clSurveillant:EnableRaisingEvents = Vrai clSurveillant est un FileSystemWatcher() Note : Pour stopper la surveillance, il suffit de remettre le membre “EnableRaisingEvents” à Faux. Les objets "FileSystemEventHandler" vont contenir les delegate, autrement dit, l’association entre une procédure WLangage et l'événement pour lequel elle doit être appelée. Dès qu'un événement est détecté (ajout de fichier, modification du nom, ...), le delegate est appelé, et la procédure Wlangage associée est exécutée. Pour instancier un objet “FileSystemEventHandler”, il suffit d’utiliser la nouvelle fonction WLangage “DotNetDélégué”, avec en paramètre : • le nom de la procédure Wlangage, • l’événement qu'elle doit traiter. Par exemple : Astuce Si vous devez utiliser des delegate .NET, vérifiez que le framework qui les contient est bien installé sur le poste client. Vous pouvez vérifier la version du framework installé grâce à la fonction WLangage DotNetVersion. gpclEventHandlerAjout =... DotNetDélégué(ElémentAjouté,... "FileSystemEventHandler") La procédure “ElémentAjouté” va traiter un événement de type "FileSystemEventHandler", c'est à dire un événement sur le système de fichier. Chaque delegate est ensuite associé à l'événement qu'il doit gérer. Par exemple, l'événement de création est associé au delegate d'ajout, l'événement de modification au delegate de modification. TDF TECH 2008 - www.pcsoft.fr - 81 Autres technologies DotNet