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