DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Gestion des langages externes / Pascal et Delphi
  • Présentation
  • Mise en place
  • 1. Inclusion des fichiers de l'interface Pascal de WINDEV
  • 2. Inclusion des déclarations HFSQL
  • Déclaration et initialisation
  • 1. Déclaration du contexte HFSQL et des contextes de travail de chaque fichier
  • 2. Initialisation des contextes HFSQL
  • 3. Chargement de la bibliothèque WINDEV (WDL)
  • Exécution de codes WINDEV depuis le langage externe
  • 1. Appel d'un code WLangage
  • 2. Récupération des événements déclenchés dans les fenêtres WINDEV
  • Mettre fin à l'application
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Présentation
Il s'agit ici d'appeler les éléments développés en WINDEV (projet, fenêtres, ... analyse) depuis le langage Pascal. Le code WLangage utilisé depuis le langage externe sera compilé dynamiquement et exécuté lors de son appel.
Ce mode est illustré dans Ville.PAS (au format Pascal) fourni dans le sous-répertoire "External Languages\FR\Pascal" du répertoire d'installation de WINDEV.
Mise en place

1. Inclusion des fichiers de l'interface Pascal de WINDEV

Si vous utilisez une base de données dans votre application, la première étape consiste à générer votre analyse. Dans la description de cette analyse, précisez le langage de programmation utilisé ainsi que le répertoire qui contiendra les fichiers source.
Grâce à la génération, un squelette de programme (*.pas) est généré. Cette opération créera de plus le fichier .h (voir plus bas) nécessaire à l'utilisation de vos fichiers de données.
Voici une liste des fichiers à inclure dans un projet Pascal pour faire appel à l'interface Pascal de WINDEV :
  • Squelet.PAS (contient la description de l'analyse)
  • <NomAnalyse>.H
  • WDHF.PAS
  • WinDev.PAS
Les fichiers .h et .pas décrivant la structure des fichiers de données seront générés automatiquement par WINDEV lors de la génération de l'analyse.

2. Inclusion des déclarations HFSQL

Les fichiers .h et .pas correspondant à la description des fichiers de l'analyse doivent être ajoutés au projet Pascal. Les déclarations des fichiers de données sont incluses dans le fichier d'extension .h.
Par exemple, dans le code Ville.pas (fourni avec WINDEV dans le répertoire "External Languages\FR\Pascal"), il s'agit des fichiers "VillePas.H" et "Squelet.PAS".
Déclaration et initialisation

1. Déclaration du contexte HFSQL et des contextes de travail de chaque fichier

Si l'application doit gérer des fichiers de données, il est nécessaire de déclarer un contexte de travail HFSQL, ainsi qu'un contexte de travail par fichier de données.
Ces déclarations sont effectuées par les lignes suivantes dans le projet Ville.pas :
{------------- include des descriptions des fichiers utilisés --------------}
{ pour chaque fichier mettre une ligne $I .WDR }
{$I VillePas.h} (* record    *)
var DP:typeDP;
var VI:typeVI;
{$F+} { directive de compilation  $F+ obligatoire en début }
procedure HDecritEnregistrement;
{Décrit chaque fichier de l'analyse}
VAR
lTabRubDP:array[0..1] of longint;
sTypeDP : String;
lTabRubVI:array[0..1] of longint;
sTypeVI : String;
begin
lTabRubDP[0] := 31; lTabRubDP[1] := 3;
sTypeDP := '11';
LE_HDecritEnregistrement(gCtx, stringtoptr('DEPART'), 34,
longint(@lTabRubDP[0]), 2, stringtoptr(sTypeDP), @DP);
lTabRubVI[0] := 41; lTabRubVI[1] := 6;
sTypeVI := '11';
LE_HDecritEnregistrement(gCtx, stringtoptr('VILLE'), 47,
longint(@lTabRubVI[0]), 2, stringtoptr(sTypeVI), @VI);
End;
procedure HInit;
VAR
{Creation du contexte}
sNomAnalyse :String;
sMotDePasse :String;
begin
gCtx := LE_CreateContexteHF(2);
sNomAnalyse := 'VILLEPAS.WDD';
sMotDePasse := ' ';
{Description de chaque enregistrement}
HDecritEnregistrement;
{Initialisation de HF}
APPELWD('HFCTX');
If LE_Hinitpartage(gCtx,WDLong) = 0 Then
begin
APPELWD('Erreur,Erreur initialisation du contexte HF');
End
{ouverture de l'analyse}
else
begin
If HOuvreAnalyse(gCtx, sNomAnalyse, sMotDePasse, ' ', ' ', ' ') = 0 Then
begin
APPELWD('Erreur,Erreur ouverture de l' 'analyse');
End;
End;
End;

2. Initialisation des contextes HFSQL

Dans le cas où votre application fait appel à une base de données, l'accès à HFSQL doit ensuite être préparé. Le test ci-dessous permet de vérifier si cette initialisation se déroule normalement :
{Creation du contexte}
begin
HInit;
End;

3. Chargement de la bibliothèque WINDEV (WDL)

La bibliothèque WINDEV d'extension .WDL contient tous les éléments du projet (fenêtres, états, classes, requêtes, analyse, ...). Il faut donc la charger en mémoire pour faire appel aux composants qu'elle contient.
Le chargement est réalisé par la fonction APPELWD('BIBLI,disque ...') comme suit :
Attention : Si la bibliothèque à charger contient des fenêtres, le code de chacune de ces fenêtres doit être intégré dans le fichier ".WDW" correspondant (option "Intégrer le code compilé" cochée, dans l'onglet "Détail" de la description de chaque fenêtre).
begin{ Ouverture de la bibliotheque }
{ si WDEntier n'est pas nul, la bibliothèque n'a pas été trouvée! }
APPELWD('BIBLI,disque,ville.wdl'); { Ouverture de la bibliotheque. }
if WDEntier0 then
begin
{ Bibliothèque non trouvée }
APPELWD('Erreur,La bibliothèque VILLE.WDL doit être présente dans le répertoire père.');
{ on indique à WINDEV que le programme va se terminer }
{ utilisez HFTermine uniquement si une base de données HFSQL est utilisée }
HFTermine;
WDTermine;
Halt;
end;
...
end;
Exécution de codes WINDEV depuis le langage externe

1. Appel d'un code WLangage

Toutes les fonctions WLangage peuvent être appelées depuis le langage externe. Leur comportement et les valeurs retournées par ces fonctions du WLangage sont exactement identiques qu'elles soient appelées :
  • depuis WINDEV ou
  • depuis l'interface langage externe
Pour connaître les paramètres et les valeur de retour d'une fonction du WLangage, il suffit donc de se reporter à l'aide en ligne ou la documentation papier habituelle relative au WLangage.
L'appel à une procédure du WLangage depuis l'interface externe se fait par la commande AppelWD. Par exemple :
ouverture de la première fenêtre du programme contenant le menu }
APPELWD('OUVRE,menu.wdw');
Il est à noter que le paramètre attendu par la fonction AppelWD est une chaîne de caractères contenant le code WLangage à exécuter.
Tout comme le WLangage codé dans WINDEV, cette chaîne n'est pas sensible à la casse (majuscules/minuscules). Donc par exemple la commande "Info" peut aussi être écrite "INFO".

2. Récupération des événements déclenchés dans les fenêtres WINDEV

La saisie dans les fenêtres WINDEV rend nécessaire la récupération des événements déclenchés dans ces fenêtres.
Afin de récupérer les événements (clic sur un menu, un bouton ...) de l'utilisateur, vous devez mettre en place une boucle dans votre programme Pascal. Cette boucle sera active tant que la fenêtre WINDEV sera ouverte et permettra d'intercepter chaque action de l'utilisateur.
Pour connaître le type d'action de l'utilisateur, vous disposez d'une variable de type chaîne de caractères (en WLangage) nommée 'WDTouche'. Cette variable sera utilisée dans votre code WLangage pour signaler au programme Pascal quel bouton a par exemple été actionné.
Exemple : Code Pascal
{ ouverture de la première fenêtre du programme contenant le menu }
APPELWD('OUVRE,menu.wdw');
{ le programme boucle jusqu'à ce que le choix Fichier Quitte }
{ soit sélectionné }
while( WDTouche<>'ESC' ) do
begin
{ on effectue la saisie du menu }
APPELWD('ECRAN,saisie');
{------------------------------------------------}
{ Décodage de l'option choisie.  }
{ WDChaine contient la suite des lettres d'appel }
{ qui aboutissent au choix de menu sélectionné   }
{------------------------------------------------}
if( WDTouche='FQ' ) then WDTouche:='ESC';{ Sortie              }
if( WDTouche='RN' ) then RechVille;      { Recherche par Ville }
if( WDTouche='RD' ) then RechDepar;      { Recherche par Dépar }
if( WDTouche='DD' ) then LstDepart;      { Affichage liste.    }
if( WDTouche='DI' ) then LstImprime;     { Impression.         }
if( WDTouche='DC' ) then LstConfig;      { Configuration imp   }
end;
Code du menu "Fichier..Quitter" de la fenêtre WINDEV "Menu" (WLangage) :
if( WDTouche='FQ' ) then WDTouche:='ESC';{ Sortie de la boucle }
Lorsque l'utilisateur cliquera sur le choix de menu "Fichier..Quitter", WDTouche sera renvoyée dans le code Pascal pour entreprendre la prochaine action.
Mettre fin à l'application
Pour terminer l'utilisation de l'interface externe, il suffit d'appeler les commandes HFTerminepartage et WDTermine qui n'ont pas de paramètres. Par exemple :
{ Terminer... }
{ utilisez HFTerminepartage uniquement si une base de données HFSQL est utilisée }
HFTerminepartage;
WDTermine;
end.
Version minimum requise
  • Version 9
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 31/08/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale