x

Bonjour,

Je suis gérant d'une société de services et de conseil située en Pays de la Loire et spécialisée en développement sur mesure sous les outils PCSOFT WinDev, WebDev et WinDev Mobile. 

Nous intervenons principalement sur le territoire français, mais nos missions nous amènent également vers d'autres contrées (USA, Suisse, Belgique, Nouvelle Calédonie ...) 

Nous proposons les services suivants:

- Développement sur mesure au forfait
- Délégation de collaborateurs sur site (régie).
- Reprise complète de vos applications, sites web et Mobiles (TMA)
- Renfort d'équipe informatique.

Si vous souhaitez discuter d'un projet ou tout simplement faire connaissance, n'hésitez pas à me contacter au 06.86.67.72.32 ou contact[@]ennovsys.fr

A très bientôt,

Vincent ROY

Lister les éléments d’une WDL

Bonsoir à tous,

J’écris cet article suite à mes interrogations à propos de la fonction native ChargeWDL. Cette dernière, comme son nom l’indique, permet de charger dans le contexte d’une application mère une bibliothèque Windev (WDL). Ainsi, l’application mère a accès aux éléments contenus dans cette WDL. Jusque la c’est logique. Souvent, sur les forums ou les groupes de discussions, on remarque certaines questions comme par exemple : « Je ne connais pas le nom des fenêtres de la WDL et énumèreElément(…) ne retourne que les fenêtres de l’application hôte, est ce que je peux les lister ? ».  Et bien la réponse est non.  Si on ne peut pas les lister, c’est que la fonction ChargeWDL ne charge pas le code du projet de la WDL, et c’est à ce moment la, à priori, qu’il retrouve les objets présents (si je ne dis pas de betise.)

Donc j’ai repris partiellement le code de la dll externe Weelc et j’en ai recodé une autre qui a pour but de charger la WDL. Cette DLL pourra être appelée via un programme Windev, ce qui signifie que l’application mère connaitra les éléments de la WDL. Attention toutefois, si du WLangage est présent dans le code du projet, il sera bien entendu exécuté (Si un Ouvre (..) y est présent, la fenêtre s’ouvrira).
Comme d’habitude, un projet d’exemple (Exécutable+source) peut être téléchargé (en Windev 12) ainsi qu’une copie d’écran:

Download
Downloaded 991 times

Enumération des éléments d’une WDL

Digg Google Bookmarks reddit Mixx StumbleUpon Technorati Yahoo! Buzz DesignFloat Delicious BlinkList Furl

11 Comments on "Lister les éléments d’une WDL"

commenter

Bonjour,

Très intéressant, je télécharge et je regarde ça de près.

Mais en attendant, je suis bien intrigué par tes explications:

>

Si l’application mère (on devrait dire « hôte » plutôt que mère, ou alors « mère porteuse » ;-) ), donc si l’application « hôte » connaît les éléments de la WDL, alors comment y fait elle appel ?
* Par une indirection ?
* Par un code compilé ? (mais ça on pouvait le faire déjà)
* Par un autre moyen ? Et si oui comment ?

Et quels sont les éléments visibles (énumérables) par l’application « hôte » ?
Procédures globales ? Classes ? Fenêtres ? Fenêtres internes ?

D’ailleurs à propos des fenêtres internes de la WDL: crois-tu que dans ces conditions, on puisse charger une fenêtre interne de la WDL dans dans un champ fenêtre interne d’une fenêtre de l’application « hôte » ?

Sinon, le pourrait-on sans ta DLL ?

Merci de ta réponse.
et Bravo… tout ça est assez impressionnant !

commenter

Salut,
-L’application « Hote » a accès aux éléments d’une WDL d’une facon tout à fait normal.
Exemple: ouvre (« fenetre_de_ta_WDL »)
- L’application Hote ne connait pas les elements de la WDL chargée. Un enumereElement ne retournera que les elements de l’application Hote.
- Si la WDL possède une fenetre interne, il suffit dans ton application « Hote » de créer un champ de fenetre interne et d’appeler la fenetre interne de la WDL.
Exemple:
ChangeFenêtreSource(ton_champ, »fenInterne_de_la_wdl »)
NB: La DLL ne charge que le code du projet de la WDL, justement pour pouvoir lister ses elements.
A+

commenter

Merci pour tes précisions (je suis encore néophyte).

C’est vrai qu’il y a quelque chose de paradoxal dans ce qui suit:
(1) L’application hôte ne *connaît pas* les éléments de la WDL externe.
(2) MAIS, l’application hôte peut quand même appeler une fenêtre interne de la WDL externe (que pourtant elle ne connaît pas, cf. point 1).
WindDev c’est *magique* ! ;)

Quant à ta mise en garde:

« Attention toutefois, si du WLangage est présent dans le code du projet, il sera bien entendu exécuté (Si un Ouvre (..) y est présent, la fenêtre s’ouvrira). »

C’est un effet de bord qui peut s’avérer utile.

Meilleures salutations.

commenter

Je suppose que l’application hote ne connait pas les éléments de la WDL chargée, car la fonction enumereElement ne permet pas ceci. Après, c’est peut etre fait expres, qui sait.

commenter

Bonjour,
j’ai essayé votre programme, mais j’ai une erreur me disant que le chargement de WD120HF.DLL a échoué (erreur 1065)
en effet cette DLL n’est pas le répertoire exe
que dois-je faire ?
merci de votre aide
yv

commenter

Bonjour,
Cela veut dire que la WDL chargée utilise la DLL WD120HF.DLL (par exemple la WDL possède une analyse).
Cette DLL doit donc etre presente dans le repertoire.

commenter

Warnings en WD 14 :

Warning : La constante ‘enumpage’ est interdite en WinDev.
FEN_MAIN_LISTE_WDL.PROCEDURE.GetConstante, Procédure locale, ligne 32, colonne 14
Warning : La constante ‘enumpageinterne’ est interdite en WinDev.
FEN_MAIN_LISTE_WDL.PROCEDURE.GetConstante, Procédure locale, ligne 36, colonne 14

commenter

Bonjour,

Oui les deux warnings sont tout à fait logique.
enumPageInterne et enumPage sont des constantes normalement utilisées par Webdev. Je les utilise ici avec Windev pour pouvoir également lister les pages d’une WDL d’un site Webdev.

Vince

commenter

Cela ne marche pas pour une wdl en windev 17 … si ?

commenter

Non de mémoire que pour la version 12

commenter

A priori il n’y a pas moyen de lister non plus les fichiers (.bmp, .txt, …) que l’on a rajouté via la liste des éléments du projet…

Serait-il possible (à tout hasard) de savoir quelle API ou quelle méthode (je suppose dans la DLL VM de Windev tu utilises pour lister ces éléments ?

Leave a Reply

Name:
Email:
Website:
Comment:
XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>