JScript dans les Fenetres.

où l'on parle du langage JScript pour EDV

JScript dans les Fenetres.

Messagede seb » Lun 30/Jan/2012 1:44 am

Ci-dessous une capture d'écran ou je fais des essais sur la façon d'appeler les variables depuis un contrôle WinForm :


JScriptWinFormEssai.png
JScriptWinFormEssai.png (106.77 Kio) Vu 10766 fois


L'idée étant que lorsque l'on clique sur le contrôle de la variable A, une boîte de dialogue s'ouvre pour demander si l'on souhaite modidier la variable B.
Tel quel cela remplit sa fonction.

Mais j'ai trois questions à partir de cet exemple.

Tout d'abord, une confirmation sur ce que je comprends.
Pour simplifier le code je me suis dit, pourquoi ne pas remplacer le script du "on click" par :
Code: Tout sélectionner
if(MessageBox.Show("Etes vous sûr de vouloir modifier la sous-variable <?= ..A.B:ShortName ?> ?",
edvClient.ToString(),
MessageBoxButtons.YesNo) == DialogResult.Yes) {
<?= ..A.B = !..A.B ?>
}

Mon idée étant : "J'ouvre un <?= pour lancer un script serveur et celui-ci réalise directement la modification de ma variable .A.B sans passer par edvar(... qui est un peu lourd "
Mais ça ne marche évidemment pas du tout : la valeur de ..A.B est modifiée avant même l'apparition de la boite de dialogue qui n'a aucune influence sur l'opération.
Après reflexion, je comprends que le script entre balise <?= ..A.B = !..A.B ?> est bien effectué par le serveur mais ce au moment de la préparation du code, avant que celui-ci ne soit traité par le client. C'est bien ça ? Mais alors l'évènement "OnClick" est géré par le serveur puisque c'est à ce moment là qu'il prépare du code pour le client ? Cela me semble étrange... Je ne sais pas si j'utilise le bon vocabulaire (effectuer, préparer, traité ... ).

La deuxième question porte sur le point où l'on se situe dans l'arborescence lors de l'appel des variables par leur adresse relative.
Dans mon code de la sous variable "OnScript" de la variable ".EssaiJScript.Visual.Win.Ctrl1A", pourquoi le nom de ".EssaiJScipt.A.B" est il appelable par <?= ..A.B:Name ?> ? Le serveur ne devrait il pas, avec cet appel, chercher la variable A comme le père ou l'oncle de ".EssaiJScript.Visual.Win.Ctrl1A" et ne pas la trouver ?
D'ailleurs si je remplace l'appel du nom par <?= ...:Name?>, je récupère ".EssaiJScript.Visual.Win", le grand-père de ".EssaiJScript.Visual.Win.Ctrl1A.OnClick"
La règle d'adressage change entre les deux appels, non ? Il semble qu'il y ait un raccourci pratique qui permet l'appel <?= ..A.B:Name ?> mais quelle est la règle qui permet cela ?

Troisième question, toujours sur l'appel de variable :
Y a t il une différence entre ces deux appels :
<?=..A.B?>
edvar("<?=..A.B:Name?>").Value
Apparemment ils fonctionnent tout deux identiquement mais y a t il une différence que l'on ne voit pas ? Je dirai non mais bon.
seb
 
Messages: 2
Inscription: Sam 14/Jan/2012 6:52 pm

Re: JScript dans les Fenetres.

Messagede admin » Mar 31/Jan/2012 4:49 pm

Dans
Code: Tout sélectionner
if(MessageBox.Show("Etes vous sûr de vouloir modifier la sous-variable <?= ..A.B:ShortName ?> ?",
edvClient.ToString(),
MessageBoxButtons.YesNo) == DialogResult.Yes) {
[color=#00FF00]<?=[/color] ..A.B = !..A.B [color=#00FF00]?>[/color]
}

ce qui entre balise est évalué par le serveur en préparation du script qui sera exécuté par le client WinForm.
Donc, l'action d'affectation est exécutée et retourne la value de ..A.B.
Côté client, si DialogResult.Yes, c'est l'expression "true" ou "false" qui est traitée...

La syntaxe ..A.B recherche dans tous les ancêtres la forme "A.B", pas seulement chez le parent.
La syntaxe ...A.B n'existe pas même si elle devrait. Elle signifierait <<la forme "A.B" chez mes ancêtres en commençant par mon grand-parent>>, ce qui éviterait un niveau de recherche chez le parent direct.
La syntaxe ... correspond au grand-parent comme .. correspond au parent.

Code: Tout sélectionner
<?=..A.B?>
edvar("<?=..A.B:Name?>").Value

Les deux formes retournent la valeur de la variable mais dans le deuxième cas, on effectue un double aller-retour avec le serveur : l'interprétation des balises puis la demande de valeur de la variable.
admin
Site Admin
 
Messages: 25
Inscription: Jeu 21/Aoû/2008 2:01 pm
Localisation: FR


Retourner vers JScript pour EDV

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron