PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → ActiveX et clic
ActiveX et clic
Iniciado por elpato, 19,nov. 2018 11:27 - 5 respuestas
Publicado el 19,noviembre 2018 - 11:27
Bonjour tout le monde

Dans un ActiveX, comment valider le clic sur un bouton par programmation ?

Exemple :
(le champ se nomme "btnenvoyer" dans la page Html.)

activ est un objet OLE dynamique
activ=ActiveX1>>Document>>GetElementById("btnenvoyer")
activ>>Click

Il n'y a pas de message d'erreur mais ne fonctionne pas pour autant.

et Inversement :
Comment intercepter le clic sur le bouton et l'indiquer dans Windev ?

Merci !
Publicado el 20,noviembre 2018 - 09:46
Bonjour
Je me réponds à moi même :
Pour simuler le clic sur un submit dans un activeX : ("btnenvoyer" est le nom du bouton)

ActiveX1>>navigate("javascript:document.getElementsByName(""btnenvoyer"")[0].click();")
(proposé par Baptiste dans le forum)

Ou encore ceci :
ActiveX1>>navigate("javascript:document.forms[0].submit()")

Par contre ceci ne fonctionne pas, alors qu'apparemment cela devrait !
pDisp est un objet OLE dynamique
pDisp = ActiveX1>>Document>>getElementById("btnenvoyer")
pDisp>>Click
("btnenvoyer" est bien ici l'id)


A l'inverse, je ne vois toujours pas comment intercepter l'évènement du clic sur un bouton submit.
ActiveXEvénement ne propose pas "click" ou "submit" ou autre.
Une idée ?
ElPato
Miembro registrado
962 mensajes
Popularité : +183 (185 votes)
Publicado el 20,noviembre 2018 - 17:15
hello,
au lieu d'utiliser l'activeX webBrowser tu peux utiliser le contrôle dotnet 2.0 WebBrowser ( System.Windows.Forms.WebBrowser ) qui est plus souple d'utilisation.
Voici un exemple qui crée une page web avec un bouton clic et l'affiche, l'évenement clic du bouton est récupéré dans Windev et on peut générer un clic de ce bouton à partir d'un bouton de Windev.
1 - Le code qui génère et affiche la page web et qui initialise aussi l'événement clic du bouton.
MonCodeHTML est une chaîne =[
<html>
<body>
<h1 align= center>Test clic WebBrowser Windev </h1>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.write("Navigateur : "+ navigator.appName + "<br>");
document.write("Version : "+ navigator.appVersion + "<br>");
document.write("Mode : "+ document.documentMode + "<br>");
</SCRIPT>
<form>
<div style="text-align:center;"><input type="button" id="test" value="Click me" > </div>
</form>
</body>
</html>
]
MonWebBrowser.DocumentText="0";
MonWebBrowser.Document.OpenNew(True)
MonWebBrowser.Document.Write(MonCodeHTML)

mybutton est un HtmlElement dynamique = MonWebBrowser.Document.GetElementById("test")
mybutton.add_Click(DotNetDélégué("ClicBouton","HtmlElementEventHandler"))


2 - Le code de traitement du clic :
Procedure ClicBouton(sender,ev est un HtmlElementEventArgs)
Trace("clic effectué")
Trace("type d'événement : ", ev.EventType)


3 - Le code de génération du clic :
mybutton est un HtmlElement dynamique = MonWebBrowser.Document.GetElementById("Test")
mybutton.InvokeMember("Click")


et voici le résultat :





--
Ami calmant, J.P
Mensaje modificado, 20,noviembre 2018 - 17:16
Publicado el 20,noviembre 2018 - 19:08
Bonjour Jurassic Pork

Merci de ta réponse. :merci:

Je ne connais pas du tout les contrôles dotNet.

Si je comprends bien ton exemple, c'est le clic sur le bouton Windev qui déclenche le "click me" de la page Html ? En fait, ce que je désire, c'est l'inverse : le clic sur le bouton "clik me" déclenche une procédure Windev, c'est-à-dire que je désire intercepter l'évènement "click me", et de préférence avec ActiveX...
Avec Dotnet, j'ai peur de m'embarquer dans qq chose que je ne maitrise pas, alors que je désire simplement gérer un malheureux clic ! :(
ElPato
Publicado el 23,noviembre 2018 - 17:06
Bonjour

Je reprends l'exemple de Jurassic Pork .

1 J'ai créé un champ .Net que je nomme monWebBrowser.

2 Je lui affecte (dans sa description) la classe .NET System.Windows.Forms.WebBrowser

3 Puis je place le code dans l'init de la fenêtre (partie 1 de l'exemple)
MonCodeHTML est une chaîne =[
<html>
<body>
<h1 align= center>Test clic WebBrowser Windev </h1>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.write("Navigateur : "+ navigator.appName + "<br>");
document.write("Version : "+ navigator.appVersion + "<br>");
document.write("Mode : "+ document.documentMode + "<br>");
</SCRIPT>
<form>
<div style="text-align:center;"><input type="button" id="test" value="Click me" > </div>
</form>
</body>
</html>
]
MonWebBrowser.DocumentText="0";
MonWebBrowser.Document.OpenNew(True)
MonWebBrowser.Document.Write(MonCodeHTML)

mybutton est un HtmlElement dynamique = MonWebBrowser.Document.GetElementById("test")
mybutton.add_Click(DotNetDélégué("ClicBouton","HtmlElementEventHandler"))


4 Je crée le bouton du clic qui contient :
mybutton est un HtmlElement dynamique = MonWebBrowser.Document.GetElementById("Test")
mybutton.InvokeMember("Click")

5 Puis je crée la procédure ClicBouton de l'exemple. :
Procedure ClicBouton(sender,ev est un HtmlElementEventArgs)
Trace("clic effectué")
Trace("type d'événement : ", ev.EventType)


Je n'ai pas d'erreur dans l'éditeur mais quand je teste, je vois bien la page html s'afficher puis j'ai cette erreur
"L'objet .NET dynamique 'mybutton' n'est pas alloué"
sur la ligne :
mybutton.add_Click(DotNetDélégué("ClicBouton","HtmlElementEventHandler"))

Où à votre avis je fais une erreur ? Ai-je mal placé dans la fenêtre le code ?
Merci
ElPato
Publicado el 29,noviembre 2018 - 11:11
Bonjour

Je me réponds à moi-même : dans l'exemple précédent en assemblage .net, j'ai résolu mon problème; j'ai créé cet exemple tel quel dans un nouveau projet et il fonctionne très bien. Je suppose que mon erreur venait du fait que dans mon précédent projet test, il y avait également des ActiveX utilisés.
Merci à Jurassic Pork.