Réactions sur les objets d'une boite de dialogue

 

Après avoir fait la table, il va falloir programmer les réactions; c'est a dire les actions si un utilisateur clique sur un bouton, ou modifie un edit box...

A - Créer des variables a partir d'un formulaire

hehe ! faut pas rêver !!

Si tu veux voir le formulaire dans mIRC, ça donne ça :

dialog Exemple2 {
title "Formulaire"
size 177 112 311 109
text "Quel est ton pseudo ?", 1, 7 25 108 18
edit
"", 2, 120 24 182 20
text "Quel est ton pass ?", 3, 7 43 108 18
edit
"", 5, 120 42 182 20
text "Quel est ton e-mail ?", 4, 7 61 108 18

edit "", 6, 120 60 182 20
button "Valider le formulaire", 7, 23 85 264 19, ok
text "Remplie le formulaire stp", 8, 95 7 120 18

}

Pour faire un formulaire, les "" des edit doivent rester vides, si tu veux les remplir, il faudra passer par autre chose (c'est pour rendre le formulaire encore plus souple, c'est a dire qu'a la deuxième ouverture de celui ci, il retrouvera ses infos initiales, non autre chose.)

Ce qu'on cherche a faire, c'est de récupérer le texte des edit box pour les mettre dans des variables... Tu as deux possibilités :

1) Dès que la personne modifie le contenu de l'edit box se craie

2) Il peut remplir le formulaire, aucune variable ne se fait avant qu'il est cliqué sur "Valider le formulaire" (Recommendé, d'ou l'intéret d'utiliser "Cancel"

 

Commençons par la première possibilité :

 

Admettons que nous voulons prendre le pseudo de l'utilisateur pour le mettre dans une variable, commençons par regarder l'ID de l'edit box ... Il s'agit du deuxième, alors ça donnera ça :

on *:dialog:exemple2:edit:2: {

--------------

RAPPEL

exemple2 - nom de la boite de dialog

edit - action

2 - ID

--------------

Ceci va executer l'action si la personne modifie le contenu de l'edit box. Maintenant, il s'agit de configurer l'action pour faire en sorte que le contenu de l'edit box aille dans la variable. Pour cela, nous allons utiliser $did. Voici ce que ça va donner au complet :

on *:dialog:exemple2:edit:2: { .set %pseudo $did(exemple2,2).text }

Le .text indique que c'est le contenu de l'Edit Box, non le numéro de la ligne, car un edit box peut avoir plusieurs lignes. A ce moment la, utilisez .sel, mais oublie .sel pour le moment :) Faites ça pour toutes les variables :

 

on *:dialog:exemple2:edit:5: { .set %pass $did(exemple2,5).text }

on *:dialog:exemple2:edit:6: { .set %email $did(exemple2,6).text }

 

Deuxième possibilité

 

Pour avoir la possibilité d'annuler sans enregistrer quoi que ce soit, ce qui est le mieux, on va placer toutes les actions sur le bouton "Valider le formulaire" ça donnera presque la même chose qu'au dessus, sauf un petit détail...

on *:dialog:exemple2:sclick:7: {

.set %pseudo $did(exemple2,2).text

.set %pass $did(exemple2,5).text

.set %email $did(exemple2,6).text

}

Comme quoi ce n'est pas compliqué... Quoi que, ce n'es pas encore fini!! Un conseil, entraine toi déja avec ça, car la suite devient.... disons qu'on s'emmèle rapidement les pinceaux... Alors essaye de comprendre déja le début.

Maintenant, tu sais créer un formulaire pour utiliser les variables ensuite dans le script...

on 1:Start: { .nick %pseudo }

on 1:Connect:.msg nickserv identify %pass

etc... Evidemment ça marche pour tout les styles de variables, les tokkens etc...

------

Maintenant, on va faire en sorte que lorsque l'utilisateur ferme et reouvre le formulaire, il retrouve ses informations. Pour cela, on va encore untiliser on *:dialog et on va aussi se servir de l'ID "0", c'est l'ID de la table, c'est pour ça qu'on peut pas utiliser le "0" pour un composant (edit box, text, tab...) Reprenons notre formulaire, ça donnerait ceci :

on *:dialog:exemple2:init:0: {
if ( %pseudo == $null ) {
.did -a exemple2 2 Ton pseudo }
else {
.did -a exemple2 2 %pseudo }
if ( %pass == $null ) {
.did -a exemple2 5 Ton pass }
else {
.did -a exemple2 5 %pass }
if ( %email == $null ) {
.did -a exemple2 6 Ton E-Mail }
else {
.did -a exemple2 6 %email }
}

Oui, c'est le moment d'utiliser /did :o) /did est sans doute la commande la plus utilisée dans les boites de dialogues, car grace a ce /did on peut rendre une boîte de dialogue dynamique. Vous avez bien compris l'exemple ? On utilise une variable, si elle est vide ou n'existe pas, ce sera un message qui apparaitra dans l'edit box, sinon ce sera la variable. Prend tout le code (le formulaire et ce code) et teste dans tes remotes :)

Maintenant, regarde bien :

A)

A) Voici notre formulaire, mais il n'a pas été rempli une seule fois.

B)

B) La, j'ai rempli une fois le formulaire, mais j'ai pas rempli le pass. Tiens ! Comment éviter ce genre de problème ?? Ce genre de prob'z peut provoquer des bugs ! Car si on envoie a notre connection /msg nickserv identify %pass : si la variable %pass est vide... NickServ enverra une notice disant qu'il manque le pass ! On peut éviter ce problème (en remplissant le formulaire évidemment!!) mais il ne faut pas que l'utilisateur puisse cliquer sur "Valider le formulaire" tant qu'il n'aura pas entré toutes ses informations. C'est encore /did qui va nous aider. Ca se complique, alors on va commencer par simple en utilisant une seule edit box a remplir.

Voici déja le code mIRC de cette fenêtre si tu veux tester

dialog exemple3 {
title "Joindre un canal..."
size 261 191 247 48
text "Quel canal veux tu joindre ?", 1, 13 7 156 18
edit "", 2, 12 24 158 20
button "Joindre", 3, 175 7 66 36, ok
}

Voyez, le bouton "Joindre" est grisé. Tant que l'utilisateur n'aura pas modifié le contenu de l'edit-box, le bouton Joindre sera grisé.

Pour cela, on va encore utiliser /did avec init, mais on va aussi regarder si ce formulaire n'a pas été ouvert une fois.

on *:dialog:exemple3:init:0: {
if ( %joindre == $null ) {
.did -b exemple3 3 | .did -a exemple3 2 $chr(35) }
else {
.did -a exemple3 2 %joindre }
}

Pour les formulaires plus compliqués, du style :

Je te conseille de ne pas griser le bouton, mais de mettre la vérifications lorsque l'utilisateur clique sur "Valider le formulaire"

Reprenons le même code que tout a l'heure :)

on *:dialog:exemple2:sclick:7: {

.set %pseudo $did(exemple2,2).text

.set %pass $did(exemple2,5).text

.set %email $did(exemple2,6).text

et ajoutons :

if ( (%pseudo == $null) || (%pseudo == Ton pseudo) ) { .did -o exemple2 8 1 Et ton pseudo ?? | halt }

if ( (%pass == $null) || (%pass == Ton pass) ) { .did -o exemple2 8 1 Et ton pass ?? | halt }

if ( (%email == $null) || (%email == Ton E-Mail) ) { .did -o exemple2 8 1 Et ton mail ?? | halt }

}

On va créer les variables du formulaire, comme tout a l'heure, mais cette fois on va les comparer au texte de départ, si le texte de départ est dans la variable, ce que rien n'a été modifié. Voyons...

mmmh On dirait que ça a modifié le haut de la boîte de dialogue. Détaillons :

.did -o exemple2 8 1 Et ton pass ??

Le /did -o indique que nous voulons modifier le texte, que did -a indique qu'on ajoute le texte a la suite.

exemple2 est toujours le nom de la boite de dialog

8 est l'ID de l'étiquette de texte a modifier

1 est le numéro de la ligne a modifier

"Et ton pass ??" est le texte qui va remplacer l'ancien.

Détaillons les /did

 

Prenons une boîte de dialog simple :

Nan, on va changer de page car il y a beaucoup de /did :)

<<< Précédent | Suite >>>