PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WEBDEV 2024 → [WB90034J] Code image cliquable réinitialise champ interrupteur...?
[WB90034J] Code image cliquable réinitialise champ interrupteur...?
Iniciado por aa, 26,oct. 2005 19:30 - 4 respuestas
Publicado el 26,octubre 2005 - 19:30
Bonjour à tous,

Je dois intégrer dans un site dynamique un carte permettant une sélection multiple de régions.

Soit un champ image cliquable "cimgcCarte" avec définition de map areas et un champ interrupteur "cinteRégions" (qui sera caché dans le traitement final) qui comporte en options les différentes régions gérées.

Je veux utiliser l'instruction serveur "ImageZone()" pour exécuter des opérations sur les options de mon interrupteur en fonction de la zone cliquée. Soit un traitement du style:

--- DEBUT CODE ---
// Variable(s) nécessaire(s) au traitement
nZone est un entier // numéro de la zone cliquée

// Récupération de la zone cliquée
nZone = ImageZone()
--- FIN CODE ---

Mais lorsque j'essaie de traiter les options de l'interrupteur, il y a échec car celui-ci est réinitialisé!

C'est facile à reproduire en tapant dans le code de clic du champ cliquable le traitement suivant (simplifié à l'extrême pour isoler le problème), destiné à tester si on a déjà cliqué sur une région donnée ou non, autrement dit si l'option d'interrupteur correspondante est à "vrai".

--- DEBUT CODE ---
SI cinteRégions[1] = vrai ALORS
cinteRégions[1] = faux
SINON
cinteRégions[1] = vrai
FIN

SI cinteRégions[2] = vrai ALORS
cinteRégions[2] = faux
SINON
cinteRégions[2] = vrai
FIN
--- FIN CODE ---

(Il y a bien sûr des tas de variantes plus ou moins intelligentes à ce code, c'est juste pour tester! Et par ailleurs, le fait d'utiliser la propriété "..valeur" ne change rien à ce qui suit.)

A mon grand désespoir, lorsque ce code est lancé depuis l'image cliquable, le champ interrupteur est réinitialisé AVANT exécution du code, l'utilisateur perdant ainsi sa sélection de régions.

Si par contre on crée un champ image "normal" dans lequel on place la carte et au-dessus duquel on "pose" des boutons transparents avec le nom des régions, avec dans le code de clic du bouton le même code que ci-dessus, les options de l'interrupteur sont correctement évaluées et/ou mises à jour.

Quelqu'un sait-il pourquoi l'interrupteur est réinitialisé lorsque le code est lancé depuis le champ cliquable? Une idée pour me sortir de là sachant que je ne peux pas utiliser la solution boutons donnée ci-avant - je suis obligé d'utiliser les maps areas et l'instruction ImageZone().

Merci à tous!

Alex
Publicado el 27,octubre 2005 - 12:44
l'image clicable malheureusement ne synchronise pas les champ de la page , c a d elle envoi pas les valeur des champs en code serveur .

exemple
interepteur = 0

affiche image

interepteur = 1 ( en code serveur)

clic image

surprise le champ interepteur = 0 toujours

car le clic image ne renvoi pas la valeur 1 pour synchronisé l'interepteur ,

la seul solution c est d'ajouter un évènement serveur après le changement d'interepteur et avant le clic sur l image , cette évènement a pour bute la synchronisation des champs de la page entre la version client et la version serveur.



Abdelhakim
Publicado el 27,octubre 2005 - 17:51
Salut,

as-tu essayé de changer, sous la description de ton champ image clicable, le "Mode de fonctionnement" en "Zone de
clicage(Envoi des coordonnées du clic au serveur)" ?

Bon dev,

Olivier

Alexis a écrit :
Bonjour à tous,

Je dois intégrer dans un site dynamique un carte permettant une sélection multiple de régions.

Soit un champ image cliquable "cimgcCarte" avec définition de map areas et un champ interrupteur "cinteRégions" (qui
sera caché dans le traitement final) qui comporte en options les différentes régions gérées.

Je veux utiliser l'instruction serveur "ImageZone()" pour exécuter des opérations sur les options de mon interrupteur
en fonction de la zone cliquée. Soit un traitement du style:

--- DEBUT CODE ---
// Variable(s) nécessaire(s) au traitement
nZone est un entier // numéro de la zone cliquée

// Récupération de la zone cliquée
nZone = ImageZone()
--- FIN CODE ---

Mais lorsque j'essaie de traiter les options de l'interrupteur, il y a échec car celui-ci est réinitialisé!

C'est facile à reproduire en tapant dans le code de clic du champ cliquable le traitement suivant (simplifié à
l'extrême pour isoler le problème), destiné à tester si on a déjà cliqué sur une région donnée ou non, autrement dit
si l'option d'interrupteur correspondante est à "vrai".

--- DEBUT CODE ---
SI cinteRégions[1] = vrai ALORS
cinteRégions[1] = faux
SINON
cinteRégions[1] = vrai
FIN

SI cinteRégions[2] = vrai ALORS
cinteRégions[2] = faux
SINON
cinteRégions[2] = vrai
FIN
--- FIN CODE ---

(Il y a bien sûr des tas de variantes plus ou moins intelligentes à ce code, c'est juste pour tester! Et par ailleurs,
le fait d'utiliser la propriété "..valeur" ne change rien à ce qui suit.)

A mon grand désespoir, lorsque ce code est lancé depuis l'image cliquable, le champ interrupteur est réinitialisé
AVANT exécution du code, l'utilisateur perdant ainsi sa sélection de régions.

Si par contre on crée un champ image "normal" dans lequel on place la carte et au-dessus duquel on "pose" des boutons
transparents avec le nom des régions, avec dans le code de clic du bouton le même code que ci-dessus, les options de
l'interrupteur sont correctement évaluées et/ou mises à jour.

Quelqu'un sait-il pourquoi l'interrupteur est réinitialisé lorsque le code est lancé depuis le champ cliquable? Une
idée pour me sortir de là sachant que je ne peux pas utiliser la solution boutons donnée ci-avant - je suis obligé
d'utiliser les maps areas et l'instruction ImageZone().

Merci à tous!

Alex
Publicado el 27,octubre 2005 - 22:37
OK mais dans ce cas je ne peux plus utiliser les "map areas" - je dois gérer un traitement prise de tête tel que dans l'exemple "wwzoom" livré avec WebDev, avec double carte, gestion de couleurs et pire de trames si je dépasse les n couleurs de base correspondant aux "iQqch".

Pas cool.

Merci pour ton aide

Alex
Publicado el 27,octubre 2005 - 22:39
euh... tu aurais un exemple dans ce cas précis?

merci pour ton aide

Alex