PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Présentation
  • Intégrer un assemblage .NET dans un projet WINDEV/WINDEV Mobile/WEBDEV
  • Utilisation des éléments de l'assemblage .NET
  • Limites
  • Incompatibilité entre l'ActiveX IE (et oAuth2) et l'utilisation d'assemblage .NET
  • Utiliser un assemblage .Net créé avec WINDEV
  • Liste des assemblages .Net utilisés dans le projet
  • Recharger les assemblages .Net
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget iOSApple WatchCatalystUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Présentation
La technologie .NET correspond à la nouvelle plateforme de développement logiciel de Microsoft. Cette plateforme .NET permet de faciliter énormément le développement d'applications à objets distribués dont les modules communiquent via Internet.
Cette aide ne fait que présenter de manière globale l'utilisation de la technologie .NET dans WINDEV, WINDEV Mobile et WEBDEV. Pour plus de détails sur la technologie .NET, nous vous conseillons de consulter des ouvrages spécifiques.
Intégrer un assemblage .NET dans un projet WINDEV/WINDEV Mobile/WEBDEV
Pour intégrer des assemblages .NET dans l'application en cours :
  1. Sous le volet "Projet", dans le groupe "Projet", déroulez "Importer" et sélectionnez "Un assemblage .NET".
  2. Sélectionnez les différents assemblages .NET à intégrer dans l'application en cours. Une zone "Recherche" permet de trouver plus rapidement l'assemblage voulu. Le bouton "Parcourir" permet de sélectionner un assemblage n'apparaissant pas dans la liste. L'assemblage sélectionné par le bouton "Parcourir" est automatiquement placé en début de liste et sélectionné.
  3. Validez. Les assemblages sélectionnés sont importés.
L'utilisation d'un assemblage .NET est identique à l'utilisation d'une classe WINDEV.
Rappel : Les classes sont visibles dans le volet "Explorateur de projet". Les classes .NET sont regroupées par "Namespace".

Utilisation des éléments de l'assemblage .NET

Les éléments suivants importés dans l'assemblage .NET peuvent être manipulés en WLangage :
  • Delegates : les delegates peuvent être manipulés grâce à la fonction WLangage DotNetDélégué.
    Versions 19 et supérieures
    Il est également possible d'ajouter un delegate avec l'opérateur += :
    clDotNet est un ClasseGestionEvenement
    // Branchement de l'événement
    clDotNet:m_LogHandler += Proc_Test
    // ...
    // Déclenche l'événement
    clDotNet:EnvoiUnMessage("Chaine envoyée")
    //-------------------------------------------------
    // Gestion de l'événement
    PROCEDURE Proc_Test(src, args)
    Info("La chaîne passée en paramètre via le délégué est " + args:get_Message())
    Nouveauté 19
    Il est également possible d'ajouter un delegate avec l'opérateur += :
    clDotNet est un ClasseGestionEvenement
    // Branchement de l'événement
    clDotNet:m_LogHandler += Proc_Test
    // ...
    // Déclenche l'événement
    clDotNet:EnvoiUnMessage("Chaine envoyée")
    //-------------------------------------------------
    // Gestion de l'événement
    PROCEDURE Proc_Test(src, args)
    Info("La chaîne passée en paramètre via le délégué est " + args:get_Message())
    Il est également possible d'ajouter un delegate avec l'opérateur += :
    clDotNet est un ClasseGestionEvenement
    // Branchement de l'événement
    clDotNet:m_LogHandler += Proc_Test
    // ...
    // Déclenche l'événement
    clDotNet:EnvoiUnMessage("Chaine envoyée")
    //-------------------------------------------------
    // Gestion de l'événement
    PROCEDURE Proc_Test(src, args)
    Info("La chaîne passée en paramètre via le délégué est " + args:get_Message())
  • NestedType de plus de 1 niveau
  • Référence
  • Properties
  • Tableau de plus de 1 dimension
  • Structures.
  • Enums.
    Il est possible de combiner des Enum provenant d'assemblages .Net à l'aide des opérateurs &, | , ||, ~ . Il est possible de convertir des enums vers des entiers ou de les construire depuis des entiers.
  • Classes internes : la syntaxe à utiliser est la suivante :
    <Nom de l'objet> est "<Nom de la classe>"

    La syntaxe sans guillemets est également disponible :
    <Nom de l'objet> est <Nom de la classe>

    Exemple :
    O est "ClasseExterne.ClasseInterne"

    O est ClasseExterne.ClasseInterne
  • Versions 21 et supérieures
    Génériques :
    La syntaxe à utiliser pour instancier un générique est la suivante :
    <Nom de l'objet> est "<Nom du générique><<Type concret>>"
    Exemple d'instanciation d'un générique :
    MaListe est "List<CMonObjet>"
    Nouveauté 21
    Génériques :
    La syntaxe à utiliser pour instancier un générique est la suivante :
    <Nom de l'objet> est "<Nom du générique><<Type concret>>"
    Exemple d'instanciation d'un générique :
    MaListe est "List<CMonObjet>"
    Génériques :
    La syntaxe à utiliser pour instancier un générique est la suivante :
    <Nom de l'objet> est "<Nom du générique><<Type concret>>"
    Exemple d'instanciation d'un générique :
    MaListe est "List<CMonObjet>"
  • Versions 21 et supérieures
    Méthodes génériques :
    La syntaxe à utiliser pour appeler une méthode générique est la suivante :
    <Nom de l'objet>."<Nom de la méthode générique><<Type concret>>"(<paramètres>)
    Exemple d'appel d'une méthode générique :
    // Prototype de la méthode générique CloneListe de la classe CClone
    // CloneListe(List<T>)
    // ...
    MaListe est "List<int>"
    // ...
    clClone est CClone
    MaListeCopie est "List<int>" <- clClone."CloneListe<int>"(MaListe)
    Nouveauté 21
    Méthodes génériques :
    La syntaxe à utiliser pour appeler une méthode générique est la suivante :
    <Nom de l'objet>."<Nom de la méthode générique><<Type concret>>"(<paramètres>)
    Exemple d'appel d'une méthode générique :
    // Prototype de la méthode générique CloneListe de la classe CClone
    // CloneListe(List<T>)
    // ...
    MaListe est "List<int>"
    // ...
    clClone est CClone
    MaListeCopie est "List<int>" <- clClone."CloneListe<int>"(MaListe)
    Méthodes génériques :
    La syntaxe à utiliser pour appeler une méthode générique est la suivante :
    <Nom de l'objet>."<Nom de la méthode générique><<Type concret>>"(<paramètres>)
    Exemple d'appel d'une méthode générique :
    // Prototype de la méthode générique CloneListe de la classe CClone
    // CloneListe(List<T>)
    // ...
    MaListe est "List<int>"
    // ...
    clClone est CClone
    MaListeCopie est "List<int>" <- clClone."CloneListe<int>"(MaListe)
  • Méthodes d'extension :
    Les méthodes d'extension peuvent être appelées de la même manière que les méthodes de l'objet.
Lorsque c'est possible, les types WLangage sont implicitement convertis en types .Net.
Exemple :
clChaineDotNet est "String" dynamique
sChaineWL est une chaîne = "chaîne"
clChaineDotNet = sChaineWL

Limites

  • Une classe WLangage ne peut pas dériver d'une classe .NET.
  • Les types suivants sont gérés :
    • Date / Heure
    • Monétaires WINDEV. En sortie, les monétaires WINDEV sont convertis en décimaux.
    • Décimaux
      Un paramètre de type décimal passé depuis un assemblage .NET à une fonction WLangage est converti en monétaire si possible. Si cette conversion est impossible, le paramètre est converti en double.
    • Structures
  • Les objets dérivés en .NET à partir d'une classe WLangage exportée ne sont pas gérés. Si un objet de ce type est passé en paramètre à une fonction WLangage, il est "casté" dans le type WLangage de base.
  • Le passage de paramètres de type pointeur entre le WLangage et .NET n'est pas géré.
  • Les membres de type "structure" des classes et/ou des collections ne sont pas visibles en .NET car les structures WLangage ne sont pas visibles en .NET. Pour contourner ce problème, il suffit de créer une classe contenant le code de la structure.
  • Les membres de type "classe" des classes et/ou des collections sont visibles en .NET uniquement si la classe est elle aussi exportée.
  • Windows Mobile Si l'application utilise un assemblage .NET, il est impossible d'utiliser un framework renommé. C'est une limitation du Compact Framework .NET.
  • Windows Mobile Si un exécutable Mobile utilisant des assemblages .NET est lancé sur un Pocket où le Framework .NET 2.0 n'est pas installé, l'exécutable ne se lance pas. Aucun message d'erreur n'est affiché.
  • Attention : Les composants créés avec une version 11 ou inférieure utilisant .NET ne fonctionneront plus avec la version 25. Il est nécessaire de re-générer les composants avec la version 25.
WINDEV

Incompatibilité entre l'ActiveX IE (et oAuth2) et l'utilisation d'assemblage .NET

Lorsque vous utilisez un champ HTML dans WINDEV, ce champ utilise l'ActiveX système "Navigateur Web Microsoft". Cet ActiveX est également utilisé par WINDEV pour toutes les authentifications OAuth2 (Facebook, Twitter, Google, etc) qui demandent une validation pour la connexion via du code HTML.
Si dans un même projet vous utilisez un champ HTML (ou une authentification OAuth2) et un assemblage ".Net", vous risquez de rencontrer une incompatibilité entre les couches .NET de Microsoft et l'ActiveX.
Il existe une API qui permet de gérer cette cohabitation. Pour cela vous devez utiliser la ligne de code suivante dans le code d'initialisation du projet ou dans le code d'initialisation de classes ou de procédure globale si l'initialisation de l'objet ".Net" est faite dans la classe ou la collection de procédure :
// Permet de gérer la cohabitation de l'ActiveX IE et de .NET
API("OLE32", "CoInitializeEx", Null, 2)
Utiliser un assemblage .Net créé avec WINDEV
Les assemblages générés avec WINDEV s'utilisent comme n'importe quel autre assemblage .NET. Cependant, le framework WINDEV doit se trouver dans le même répertoire que l'assemblage.
Liste des assemblages .Net utilisés dans le projet
Pour afficher la liste des assemblages .Net utilisés dans le projet, vous pouvez :
  • Sous le volet "Projet", dans le groupe "Projet", dérouler "Liste des éléments" et sélectionner "Liste des assemblages .NET utilisés".
  • Dans le volet "Explorateur de projet", dans le menu contextuel de l'élément "Assemblages .NET", sélectionner l'option "Liste des assemblages .NET utilisés dans le projet".
Versions 20 et supérieures
Recharger les assemblages .Net
Vous pouvez recharger les assemblages .NET utilisés dans le projet pour prendre en compte une modification apportée sur un assemblage depuis l'ouverture du projet.
  1. Dans le volet "Explorateur de projet", sélectionnez l'élément "Assemblages .NET".
  2. Dans le menu contextuel de cet élément, sélectionnez l'option "Recharger les assemblages .NET".
Nouveauté 20
Recharger les assemblages .Net
Vous pouvez recharger les assemblages .NET utilisés dans le projet pour prendre en compte une modification apportée sur un assemblage depuis l'ouverture du projet.
  1. Dans le volet "Explorateur de projet", sélectionnez l'élément "Assemblages .NET".
  2. Dans le menu contextuel de cet élément, sélectionnez l'option "Recharger les assemblages .NET".
Recharger les assemblages .Net
Vous pouvez recharger les assemblages .NET utilisés dans le projet pour prendre en compte une modification apportée sur un assemblage depuis l'ouverture du projet.
  1. Dans le volet "Explorateur de projet", sélectionnez l'élément "Assemblages .NET".
  2. Dans le menu contextuel de cet élément, sélectionnez l'option "Recharger les assemblages .NET".
Liste des exemples associés :
Pocket _NET Mobile (WINDEV Mobile) : Pocket _NET
[ + ] Cet exemple utilise un assemblage .NET Mobile (OpenNETCF.Net) afin de récupérer la liste des cartes réseaux WIFI disponibles sur un PDA et de récupérer des informations de connexion sur ces cartes.
WD Text-To-Speech Exemples didactiques (WINDEV) : WD Text-To-Speech
[ + ] Cet exemple montre comment effectuer une synthèse vocale dans une application WINDEV en utilisant la classe SpeechSynthesizer du framework DOTNET.
Remarque :
- Cet exemple requiert une version 3.0 de DotNet minimum,
- Le synthetiseur vocal est en version anglaise par défaut.
WD Utilisation des classes DotNET Exemples didactiques (WINDEV) : WD Utilisation des classes DotNET
[ + ] Cet exemple permet d'utiliser des classes et champs DOTNET en WLangage.
Dans cet exemple, nous utiliserons :
- la classe String qui permet de manipuler des chaînes de caractères (passage en minuscules, en majuscules, comptage de caractères, ...).
- la classe MessageBox qui permet de créer des boîtes de dialogue personnalisées (choix du texte, de l'icône et des boutons).
Ces deux classes proviennent des assemblages mscorlib.dll et System.Windows.Form.dll.
- un champ DOTNET permettant de visualiser des pages web.

Résumé de l'exemple livré avec WINDEV :
Cet exemple permet :
- d'analyser une chaîne de caractères (nombre de caractères, nombre de mots, remplacement de caractères, ...)
- de configurer les boîtes de dialogue affichées (boutons, icône, texte). Le nom du bouton sélectionné par l'utilisateur est automatiquement affiché.
- d'utiliser un champ DOTNET afin de visualiser des pages web.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire