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
>>>