PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Dialogue Windev et Activex
Dialogue Windev et Activex
Iniciado por steph Pol, 13,oct. 2004 21:16 - 6 respuestas
Publicado el 13,octubre 2004 - 21:16
J'utilise un ActiveX (*.ocx) programmé en C++ dans mon appli Windev.
L'activeX calcule des valeurs, et j'aimerais les récuperer sous Windev.

J'y arrive, mais avec une seule valeur à la fois, par exemple:

test est un réel
test = Activex>>GetTest()
// avec défini en c++: double GetTest();


==> Comment faire pour obtenir plusieurs valeurs en une seule fois?


Pour l'instant j'ai essayé 2 méthodes sans succes:

1) utiliser des parametres dans GetTest:
test1 est un réel
test2 est un réel
Activex>>GetTest(test1, test2)
// c++: void GetTest( double test1, double test2)

-> resultat test1 et 2 = 0

J'ai essayé avec des pointeurs aussi
[meme que + haut]
// c++: void GetTest( double* test1, double* test2)

-> resultat test1 et 2 = 0


2) utiliser une fontion c++ qui renvoie un tableau
style: double* GetTest()
mais j'arrive pas à trouver une syntaxe qui correspond avec windev

Vous avez des idées???
Publicado el 14,octubre 2004 - 12:34
Regle élémentaire de programation :

un fonction ne renvoie qu'une et une seule expression !!!

Pour resoudre ton probleme, transforme le code comme suit :

ActiveX>>GetTest([param1],[param2],....[param_n]) <-- Execute le traitement au sein de la classe et affecte les valeurs internes de ce que tu as besoin

Ensuite

crée des methodes d'accès aux valeurs interne de ta classe (1 methode par variable a recupérer)

ex :

ActiveX>>GetValueOfResultat1()
ActiveX>>GetValueOfResultat2()
ActiveX>>GetValueOfResultat_n()

Cordialement.
Publicado el 14,octubre 2004 - 13:45
Le pb est quand n devient grand, ca fait bcp d'appels "ActiveX>>GetValueOfResultat_n()"

J'aurais aimé:

- soit que l'ActiveX me passe un tableau de valeurs, mais j'arrive pas à le récupérer avec Windev (Windev gere-t-il les pointeurs?)

- soit faire un seul appel "ActiveX>>GetValue(Resultat1, Resultat2,...), en passant les Resultats par adresse pour que l'ActiveX les modifie, mais encore une fois j'échoue parce que je n'arrive pas à trouver une syntaxe correcte avec Windev.

Cordialement
Publicado el 25,octubre 2004 - 03:34
Bonjour, sur le même thème brûlant des ActiveX sous Windev !

Je teste une ActiveX d'affichage vectoriel (www.vectordraw.com) et dois transmettre cette fois 2 paramètres de type array à une méthode du type suivant :

activeX.Zoom ("W", Array(0,0), Array(100,100)) (le zoom, c'est sympa à tester)

Au premier abord; deux problèmes à résoudre:
1) passage de 2 paramètres
2) les paramètres sont des tableaux

Comment transformeriez-vous ce code en Windev ?

Merci.
Publicado el 28,enero 2005 - 11:15
j'utilise aussi l'activex vectordraw, qui est tres bien faite et tres accessible en VB. sous windev c'est une autre paire de manches pour accéder aux classes (vdcircle, vdspline......) d'ou imlposibilité de déclarer des objets pour effectuer d'éventuels tracés.

d'un autre coté j'ai une tres petite expérience dans l'utilisation des activex sous windev, mais j'ai quand meme l'impression qu'à part utiliser certains evenements ou methodes, grand nombre de classes de l'objet activex ne sont pas accessible..... donc l'activex est dans son ensemble inutilisable....

est ce que je me trompe ?
Publicado el 28,enero 2005 - 14:48
Bonjour,
WinDev manipule très bien les objets de type ActiveX à l'exception de
certains objets Systemes et de collection d'objets qui ne peuvent être
manipulés par leur indice mais seulement par un nom. du genre de
certaines collection d'objets contenu dans le FileSystemObject.

Dans les autres cas je n'ai pas rencontré de problème.

la plus part du temps les classes appartenants aux activeX sont
accessible tout simplement de la facon suivante:

En VB
Dim mVDCircle as VdCircle

set mVDCircle = actxVector.GetCircle()
mVDCircle.Paint()

en WinDev
mVDCircle est un objet automation dynamique

mVDCircle = actxVerctor>>GetCircle()
mVDCircle>>Paint()

J'utilise OLEView de VB6 pour savoir si l'objet doit être connecté à un
serveur ou bien si il doit être de type automation dynamique
exemple de connexion à un serveur

oWrd est un objet automation dynamique "Word.Application"

[DrCharly93]

hugogreen a écrit :
j'utilise aussi l'activex vectordraw, qui est tres bien faite et tres accessible en VB. sous windev c'est une autre paire de manches pour accéder aux classes (vdcircle, vdspline......) d'ou imlposibilité de déclarer des objets pour effectuer d'éventuels tracés.

d'un autre coté j'ai une tres petite expérience dans l'utilisation des activex sous windev, mais j'ai quand meme l'impression qu'à part utiliser certains evenements ou methodes, grand nombre de classes de l'objet activex ne sont pas accessible..... donc l'activex est dans son ensemble inutilisable....

est ce que je me trompe ?

Publicado el 28,enero 2005 - 21:21
salut,

j'ai lu ton explication avec attention et j'ai soufflé un soupir de soulagement en me disant, mais ouiiiii il a raison, que suis-je bête !!!!

alors j'ai procédé comme suit :

en VB :

Dim mycircle As vdCircle
Set mycircle = VDPro.ActiveDocument.Entities.AddCircle(Array(1#, 0#, 0#), 2#)
mycircle.Invalidate

' VDPRO est le nom de l'activex sous vb


en windev je seche toujours..... alors je pense que si tu m'expliquais pour le coup et que je comprenais cet exemple précis, je ne t'embêterais plus dans l'avenir et je me sentirais moin sstupide.

merci encore une fois pour ton aide précieuse.... car c'est pour moi une grande premiere sous windev d'utiliser des activex et je suis perdu.....

Hugo

PS : au fait si ça peut t'interresser pour un éventuel développement vectordraw a une adress internet http://www.vdraw.com