Dans un champ Activex Internet Explorer, comment cocher un bouton radio
Bonjour

Quel est le code Windev à utiliser dans un champ Activex du navigateur IExplorer pour cocher un bouton radio d'un formulaire ?


J'ai résolu 2 cas d'actions sur des champs d'un formulaire dans une page affichée : Il me reste celui d'un bouton radio

Merci de m'aider si celà vous est possible



// en GLOBAL
mhtmDoc3 est un objet OLE dynamique // IHTMLDocument3
mdocDocument est un objet OLE dynamique // HTMLDocument
mhtmInputBox est un objet OLE dynamique // HTMLInputElement


// Après chargement terminé de la page contenant le formulaire ...

-1- Cas d'un champ de formulaire recevant une chaine de caractère : ( Ok )

///Code source HTML du formulaire de la page affichée dans le champ activex
///Le champ à remplir est le nom
///<TD class=normal vAlign=center colSpan=3><INPUT class=input1 onfocus=select() tabIndex=2 maxLength=35 name=nom></TD>

// code Windev qui charge le champ du nom
WNomDemande = "aaaaaa"
WNameInput = "nom"
TagName is string = WNameInput
mhtmInputBox = mdocDocument>>getElementById(TagName)
mhtmInputBox>>Value = WNomDemande



-2- Cas de la simulation du clic sur le bouton SUBMIT ( Ok )

///Code source HTML du formulaire de la page affichée dans le champ activex
///Le champ traité est le bouton SUBMIT dont le nom est submit
///<TD class=normal><INPUT class=submit tabIndex=8 type=submit value=calculer name=submit></TD>

// Code Windev qui simule le click sur le bouton SUBMIT
WNameInput = "submit"
TagName = WNameInput
mhtmInputBox = mdocDocument>>getElementById(TagName)
mhtmInputBox>>Click



-3- Cas d'un bouton RADIO ( à résoudre )

///Code source HTML du bouton RADIO permettant de saisir le sexe
///<TD class=normal vAlign=center><INPUT tabIndex=3 type=radio value=f name=genre>F</TD>///
<TD class=normal vAlign=center><INPUT tabIndex=4 type=radio value=m name=genre>M</TD>


QUESTION : Quel est le code Windev pour sélectionner le sexe M par exemple ?

WSexeDemande = "M"
WNameInput = "genre"
TagName is string = WNameInput
mhtmInputBox = mdocDocument>>getElementById(TagName)

???? comment préciser l'index pour cocher la 2ème option comme par exemple ...
mhtmInputBox>>index(2)>>click() ???? cette commande est rejetée

---------
J'ai trouvé une solution insuffisante qui me permet de sélectionner la 1ère option par défaut avec CHECKED
SI WSexeDemande = "M" ALORS
WNameInput = "genre"
TagName is string = WNameInput
mhtmInputBox = mdocDocument>>getElementById(TagName)
mhtmInputBox>>checked(1)
FIN

Cordialement

Contribution le : 18/04/2006 14:26
Créer un fichier PDF de la contribution Imprimer


Re: Dans un champ Activex Internet Explorer, comment cocher un bouton radio
Stagiaire WDF
Inscrit:
01/06/2004 17:15
Post(s): 21
mhtmInputBox>>checked = vrai ? ;)
ah pardon tu voudrai sélectionner un radio pas un checkbox alors il faut prendre ton index et le mettre à vrai

Je te rajoute un lien de documentation javascript, car tu accéde à cela en fait : http://www.somacon.com/p143.php

Contribution le : 19/04/2006 08:45
Créer un fichier PDF de la contribution Imprimer


Re: Dans un champ Activex Internet Explorer, comment cocher un bouton radio
Bonjour et merci pour ton aide

J'ai bien trouvé ce code javascript mais je n'arrive pas à l'adapter à windev.


J'ai essayé ceci ...

mhtmDoc3 est un objet OLE dynamique // IHTMLDocument3
mdocDocument est un objet OLE dynamique // HTMLDocument
mhtmInputBox est un objet OLE dynamique // HTMLImhtmDoc3

mhtmDoc3 = activex1>>Document
mdocDocument = mhtmDoc3
mhtmInputBox = mdocDocument>>forms("Data")>>elements>>"genre"

setCheckedValue(mhtmInputBox,"M")

FONCTION setCheckedValue(radioObj, newValue)
radioLength est un entier = radioObj>>length
i est un entier
POUR i = 0 A radioLength-1
radioObj(i)>>checked = Faux
SI radioObj(i)>>value = newValue ALORS
radioObj(i)>>checked = Vrai
FIN
FIN

Mais je n'arrive pas à indicer par i le paramètre radioObj qui est mis en erreur à la compilation




--------- code java script a transposer ---------------------

// set the radio button with the given value as being checked
// do nothing if there are no radio buttons
// if the given value does not exist, all the radio buttons
// are reset to unchecked
function setCheckedValue(radioObj, newValue) {
if(!radioObj)
return;
var radioLength = radioObj.length;
if(radioLength == undefined) {
radioObj.checked = (radioObj.value == newValue.toString());
return;
}
for(var i = 0; i < radioLength; i++) {
radioObj[i].checked = false;
if(radioObj[i].value == newValue.toString()) {
radioObj[i].checked = true;
}
}
}

Contribution le : 19/04/2006 16:08
Créer un fichier PDF de la contribution Imprimer


Re: Dans un champ Activex Internet Explorer, comment cocher un bouton radio
Stagiaire WDF
Inscrit:
01/06/2004 17:15
Post(s): 21
Le problème vient de là : mdocDocument>>forms("Data")>>elements>>("genre")

Dans l'exemple si tu regarde bien ils font [...BLABLABLA...].elements['number'] c'est à dire qu'il vont prendre l'ensemble des élements nommmé number..

Tu peux essayer soit :
mhtmInputBox = mdocDocument>>forms("Data")>>elements("genre")

qui me parait mieu que ce que tu as écrit

Sinon :

mdocDocument>>getElementsByName(TagName)
peut être une autre solution

aprés cela devrait être indexé (et pas indicé ;))

Contribution le : 19/04/2006 19:19
Créer un fichier PDF de la contribution Imprimer


Re: Dans un champ Activex Internet Explorer, comment cocher un bouton radio
Citation :

Doudou a écrit:
Le problème vient de là : mdocDocument>>forms("Data")>>elements>>("genre")
mdocDocument>>getElementsByName(TagName)
peut être une autre solution


Bonjour

J'ai modifié selon ton conseil de la façon suivante

TagName est une chaîne = "genre"
mhtmInputBox=mdocDocument>>getElementsByName(TagName)
setCheckedValue(mhtmInputBox,"M")


PROCEDURE setCheckedValue(radioObj, newValue)

radioLength est un entier = radioObj>>length

// a ce niveau j'obtiens bien une valeur de 2 correspondant aux 2 options F et M


i est un entier
POUR i = 0 A radioLength-1
radioObj(i)>>checked = Faux
SI radioObj(i)>>value = newValue ALORS
radioObj(i)>>checked = Vrai
FIN
FIN

Ce n'est pas à l'exécution que j'ai un problème : je ne peux même pas exécuter car le compilateur signale en erreur radioObj(i) qui ne peut être indexé comme celà est fait en javascript

Cordialement

Contribution le : 20/04/2006 08:52
Créer un fichier PDF de la contribution Imprimer


Re: Dans un champ Activex Internet Explorer, comment cocher un bouton radio
// Code complet

mdocDocument est un objet OLE dynamique // HTMLDocument
mhtmInputBox est un objet OLE dynamique // HTMLInputElement

mdocDocument = ActiveX1>>Document

TagName est une chaîne = "genre"
mhtmInputBox=mdocDocument>>getElementsByName(TagName)
setCheckedValue(mhtmInputBox,"M")


PROCEDURE setCheckedValue(radioObj, newValue)
radioLength est un entier = radioObj>>length
i est un entier
POUR i = 0 A radioLength-1
radioObj[i]>>checked = Vrai
SI radioObj[i]>>value = newValue ALORS
radioObj[i]>>checked = Vrai
FIN
FIN


J'ai transformé les (i) par des [i]

Plus d'erreur du compilateur mais à l'exécution j'ai le message Windev suivant :

L'opérateur [ ] est interdit sur la variable 'mhtmInputBox' car elle est de type objet Automation.

A mon niveau, je pense que j'arrive à une impossibilité de traduire ce code javascript en code Windev

Contribution le : 20/04/2006 10:27
Créer un fichier PDF de la contribution Imprimer


Re: (Résolu] Dans un champ Activex Internet Explorer, comment cocher un bouton radio
Bonjour,

// Remplissage d'un formulaire affiché dans un champ Activex de Internet Explorer
Nota : Bien sûr, ce code ne doit être exécuté que lorsque la page HTML est complètement chargée.


Voici un code complet qui fonctionne mais qui trouvera certainement à être amélioré par des développeurs plus pointus que moi


//Procédure de chargement d'une zone de formulaire en INPUT

mhtmDoc3 est un objet OLE dynamique
mdocDocument est un objet OLE dynamique
mhtmInputBox est un objet OLE dynamique


// ACCES direct aux champs d'un formulaire

// L'exmple traité est le suivant :
// Formulaire composé successivement de ...
// Un champ Nom
// Un champ Prénom
// Un champ Sexe à cocher F ou M
// Un champ Jour
// Un champ Mois
// Un champ Année
// Un bouton SUBMIT


mhtmDoc3 = ActiveX1>>Document
mdocDocument = mhtmDoc3>>body>>all>>tags("INPUT")

// 1er champ texte du formulaire : Nom
mdocDocument>>item(0)>>value("Cccccccccc")

// 2ème champ texte du formulaire : Prénom
mdocDocument>>item(1)>>value("Dddddddddd")

// sélectionner une option dans un bouton radio : Sexe avec options F et M
// dans cet exemple les 2 options occupent respectivement les 3ème et 4ème rangs
// chaque position du bouton radio est accessible directement
// dans cet exemple on clique sur la 2ème option du bouton radio
mdocDocument>>item(3)>>click()

// Formulaire date de naissance
// 5ème champ texte du formulaire : Jour
mdocDocument>>item(4)>>value("01")
// 6ème champ texte du formulaire : Mois
mdocDocument>>item(5)>>value("01")
// 7ème champ texte du formulaire : Année
mdocDocument>>item(6)>>value("1990")


// clic sur bouton SUBMIT
TagName est une chaîne = "submit"
mhtmInputBox = mhtmDoc3>>getElementById(TagName)
mhtmInputBox>>Click

libérer mhtmDoc3
libérer mdocDocument
libérer mhtmInputBox

Contribution le : 20/04/2006 14:12
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2