PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV 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/iPadApple WatchUniversal 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.
Attention : Les composants créés avec une version 11 ou inférieure utilisant .NET ne fonctionneront plus avec la version 23. Il est nécessaire de re-générer les composants avec la version 23.
Intégrer un assemblage .NET dans un projet WINDEV/WINDEV Mobile/WEBDEV
Pour intégrer des assemblages .NET dans l'application en cours :
  1. Sélectionnez l'option "Atelier .. .NET .. Utiliser un assemblage .NET dans ce projet".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
  • Versions 16 et supérieures
    Structures.
    Nouveauté 16
    Structures.
    Structures.
  • Enums.
    Versions 16 et supérieures
    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.
    Nouveauté 16
    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.
    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>"

    Versions 16 et supérieures
    La syntaxe sans guillemets est également disponible :
    <Nom de l'objet> est <Nom de la classe>
    Nouveauté 16
    La syntaxe sans guillemets est également disponible :
    <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"

    Versions 16 et supérieures
    O est ClasseExterne.ClasseInterne
    Nouveauté 16
    O est ClasseExterne.ClasseInterne
    O est ClasseExterne.ClasseInterne
Les tableaux d'objets ne sont pas gérés dans cette version.
  • 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)
  • Versions 21 et supérieures
    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.
    Nouveauté 21
    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.
    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.
  • Versions 17 et supérieures
    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
    Nouveauté 17
    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
    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é.
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 :
  • Sélectionner l'option "Atelier .. .NET .. Liste des assemblages .NET utilisés par le projet".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 de l'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 de l'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 de l'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 de l'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