Dialog: did -b imbriqués

Résolu
cs_maaars Messages postés 111 Date d'inscription dimanche 31 août 2003 Statut Membre Dernière intervention 14 août 2005 - 1 août 2005 à 00:32
cs_maaars Messages postés 111 Date d'inscription dimanche 31 août 2003 Statut Membre Dernière intervention 14 août 2005 - 2 août 2005 à 06:37
plop plop les gens



voici mon soucis:

dans un dialogue j'ai mis un check qui doit passer toute une tab en
"result" et dans cette tab il y a un autre check qui passe la moitié de
cette tab en result aussi. (on "deverouille" la moitié de la tab que si
le 1er check est lui meme "ouvert")



donc en toute logique j'ai mis un:

if %var-1er-check == 1 { did -c $dname 25 1 | did -b dialog 27,28,29,30,31,32,33,39,40,41,42 }

if %var-2e-check == 1 { did -c $dname 33 1 | did -b dialog 27,28,29,30,31,32 }



mais quand %var-2e-check == 1 le "did -b" du did 25 marche pas sur les "otpions" 27 a 32

en clair si le 2e check est actif il bloque le 1er check...



existe te t'il un moyen de faire predominer le 1er check sur le 2e ? ou autre chose pour que ca marche enfin :/



merci d'avance




('' )

5 réponses

Nolson Messages postés 216 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 16 mars 2006
1 août 2005 à 22:29
Je vois que sur chaque click tu vas verifier l'état de tous tes controles.
Le script évaluera les if dans l'ordre où tu les as mis, si tu veux que l'état du bouton 2 soit prédominant il te suffit de placer son if en dernier.
tu as mis :

on *:dialog:dialogue:sclick:*:{
if $did(25).state == 0 { did -b dialogue 30,31,33,39,40 | set %2 0 }
if $did(25).state == 1 { did -e dialogue 30,31,33,39,40 | set %2 1 }
if $did(33).state == 0 { did -b dialogue 30,31 | set %1 0 }
if $did(33).state == 1 { did -e dialogue 30,31 | set %1 1 }
}

Replace ta première ligne en dernier :

on *:dialog:dialogue:sclick:*:{
if $did(25).state == 1 { did -e dialogue 30,31,33,39,40 | set %2 1 }
if $did(33).state == 0 { did -b dialogue 30,31 | set %1 0 }
if $did(33).state == 1 { did -e dialogue 30,31 | set %1 1 }
if $did(25).state == 0 { did -b dialogue 30,31,33,39,40 | set %2 0 }
}

Comme cela à chaque click il vérifiera en dernier l'état de 2 et tous tes controles seront désactivés si 2 n'est pas coché.
3
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
1 août 2005 à 01:05
Si j'ai bien compris , utilise elseif
0
cs_maaars Messages postés 111 Date d'inscription dimanche 31 août 2003 Statut Membre Dernière intervention 14 août 2005
1 août 2005 à 16:48
bah en fait c'est pas tout a fait ca :/



si je coche le 1er check ca doit passer toute la tab en result sans se soucier des autres checks...



le "elseif" marche pas j'avais deja essayé :o)

('' )
0
cs_maaars Messages postés 111 Date d'inscription dimanche 31 août 2003 Statut Membre Dernière intervention 14 août 2005
1 août 2005 à 17:18
en fait je vais montrer le code ca sera peut etre plus simple :x



dialog dialogue {

title "dialogue"

size -1 -1 235 125

option dbu

button "Valider", 1, 100 104 35 11, ok

button "Annulé", 8, 138 104 35 11, cancel

button "Tester", 9, 62 104 35 11

tab "tab 1", 21, 0 -3 233 122

tab "tab 2", 22

combo 30, 13 42 52 50, result tab 22 drop

combo 31, 13 64 52 50, result tab 22 drop

check "1", 33, 5 93 111 10, tab 22

combo 39, 127 64 52 50, result tab 22 drop

combo 40, 127 42 52 50, result tab 22 drop

check "2", 25, 36 14 160 10, tab 22

}

on *:dialog:dialogue:init:*:{

if %1 == 1 { did -c $dname 33 1 | did -b dialogue 30,31 }

if %2 == 1 { did -c $dname 25 1 | did -b dialogue 30,31,33,39,40 }

}

on *:dialog:dialogue:sclick:9:echo -a test

on *:dialog:dialogue:sclick:*:{

if $did(25).state == 0 { did -b dialogue 30,31,33,39,40 | set %2 0 }

if $did(25).state == 1 { did -e dialogue 30,31,33,39,40 | set %2 1 }

if $did(33).state == 0 { did -b dialogue 30,31 | set %1 0 }

if $did(33).state == 1 { did -e dialogue 30,31 | set %1 1 }

}



j'ai essayé de garder que ce qui nous interesse :o) (d'ou le fait que le dialogue ressemble a rien xD )



donc la:

si 1 et 2 sont decochés la tab 2 est toute est result

si 1 et 2 sont cochés la tab 2 est active en entier



mais si je decoche 2 sans avoir decoché 1 j'ai qu'une moitier de dialogue qui passe en result...



comment faire pour tout remettre en result sans avoir a decocher 1 ?



('' )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_maaars Messages postés 111 Date d'inscription dimanche 31 août 2003 Statut Membre Dernière intervention 14 août 2005
2 août 2005 à 06:37
ouaiiiii ca marche enfin

merci Nolson

('' )
0
Rejoignez-nous