Programmer avec le langage Linotte
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Programmer avec le langage LinotteConnexion

Besoin d'un conseil sur la programmation en Linotte ?

Le Deal du moment :
Aliexpress : codes promo valables sur tout le site
Voir le deal

descriptionInsérer des sous-menus dans des sous-menus ? EmptyInsérer des sous-menus dans des sous-menus ?

more_horiz
Peut-on insérer des sous-menus dans des sous-menus ?

descriptionInsérer des sous-menus dans des sous-menus ? EmptyRE: Insérer des sous-menus dans des sous-menus ?

more_horiz
ça sera possible dans la version 2.1.1 :
[php]
globale
form :: formulaire, largeur vaut 400, hauteur vaut 260
m1 :: menu, texte vaut "Menu 1"
m2 :: menu, texte vaut "Menu 2"
sm1 :: sousmenu, texte vaut "Toc toc toc !"
l1 :: étiquette, texte vaut "", x vaut 30, y vaut 100

principale :
début
/*On ajoute le menu principal*/
Ajoute m1 & l1 dans form
/*On ajoute les sous-menus*/
Ajoute m2 dans m1
/*Et les éléments dans ce sous-menus*/
Ajoute sm1 dans m2
Fais réagir sm1 à "clic souris" pour message
tant que vrai, lis
temporise
ferme

message :
*m :: sousmenu
début
texte @ l1 vaut "Le sous-menu fonctionne !"
Reviens
[/php]

descriptionInsérer des sous-menus dans des sous-menus ? EmptyRE: Insérer des sous-menus dans des sous-menus ?

more_horiz
Merci x)

En fait, qu'apporte l'espèce sousformulaire vis-à-vis des formulaires ?

Et je constate encore le bogue avec mon sousmenu "Activer/Désactiver la grille" qui sert à effacer le quadrillage de la toile, mais qui ne fonctionne que rarement...

Wam a écrit:

J'ai découvert un nouveau bogue très bizarre dans mon programme.
Voici un extrait de mon code que vous pouvez exécuter :

[php]
globale
// Fenêtre principale
Fenêtre_principale :: formulaire, titre vaut "Editeur de cartes", hauteur vaut 800, largeur vaut 1400
popup :: popup

// Toile
fond :: toile, x vaut 0, y vaut 35, hauteur vaut 740, largeur vaut 1400, couleur vaut "blanc", pointeur vaut "flèche"
xtoile :: xtoile, x vaut 0, y vaut 35
bordure_gauche :: rectangle, x vaut 0, y vaut 0, position vaut 1, hauteur vaut hauteur de fond, largeur vaut 150, plein vaut "oui", couleur vaut "blanc"

// Menus
menu1 :: menu, texte vaut "Carte"
menu1s1 :: sousmenu, texte vaut "Nouveau quadrillage"
menu2 :: menu, texte vaut "Edition"
menu2s1 :: sousmenu, texte vaut "Activer/désactiver la grille"

// Barre d'outils
barre1 :: barre, hauteur vaut 40, largeur vaut largeur de Fenêtre_principale, x vaut 0, y vaut 5
bouton1 :: bouton, icône vaut "Icônes\table_borders_16x16.gif", texte vaut "", infobulle vaut "Activer/désactiver la grille"

// Fenêtre nouveau quadrillage
Fenêtre_nouveau_quadrillage :: formulaire, hauteur vaut 140, largeur vaut 300, titre vaut "Nouveau quadrillage", visible vaut "non", x vaut 450, y vaut 255
txt_Fnq1 :: étiquette, texte vaut "Nombre de cases en largeur :", x vaut 10, y vaut 12
txt_Fnq2 :: étiquette, texte vaut "Nombre de cases en hauteur :", x vaut 10, y vaut 32
txt_Fnq3 :: étiquette, texte vaut "Largeur des cases :", x vaut 10, y vaut 52
txt_Fnq4 :: étiquette, texte vaut "Hauteur des cases :", x vaut 10, y vaut 72
choix_case_largeur :: champ, x vaut 200, y vaut 10, taille vaut 3
choix_case_hauteur :: champ, x vaut 200, y vaut 30, taille vaut 3
choix_taille_largeur_case :: champ, x vaut 200, y vaut 50, taille vaut 3
choix_taille_hauteur_case :: champ, x vaut 200, y vaut 70, taille vaut 3
bouton_valider_Fnq :: bouton, texte vaut "Valider", x vaut 70, y vaut 110
bouton_annuler_Fnq :: bouton, texte vaut "Annuler", x vaut 160, y vaut 110

// Quadrillage
taille_largeur_case :: nombre
taille_hauteur_case :: nombre
nombre_case_largeur :: nombre
nombre_case_hauteur :: nombre
nombre_case_largeur_effectif :: nombre
nombre_case_hauteur_effectif :: nombre
nombre_case :: nombre
nombre_case_total :: nombre
copie_index_carte :: nombre

grille4 :: casier de rectangle
grille5 :: casier de rectangle

grille_off :: drapeau

Fenêtre_principale :
début
// Construction des fenêtres

Ajoute txt_Fnq1 & txt_Fnq2 & txt_Fnq3 & txt_Fnq4 & choix_case_largeur & choix_case_hauteur & choix_taille_largeur_case & choix_taille_hauteur_case & bouton_valider_Fnq & bouton_annuler_Fnq dans Fenêtre_nouveau_quadrillage
Fais réagir Fenêtre_nouveau_quadrillage à "clic souris" pour Fermer_fenêtre_nouveau_quadrillage
Fais réagir bouton_annuler_Fnq à "clic souris" pour Fermer_fenêtre_nouveau_quadrillage
Fais réagir bouton_valider_Fnq à "clic souris" pour Générer_quadrillage

// Début du programme

Ajoute xtoile dans Fenêtre_principale
visible de Fenêtre_principale vaut "oui"
Ajoute menu1 dans Fenêtre_principale
Ajoute menu1s1 dans menu1
Ajoute menu2 dans Fenêtre_principale
Ajoute menu2s1 dans menu2
Fais réagir Fenêtre_principale à "clic souris" pour Fermer_fenêtre_principale
Fais réagir menu1s1 à "clic souris" pour Fenêtre_nouveau_quadrillage
Fais réagir menu2s1 à "clic souris" pour Désactiver_grille

Ajoute barre1 dans Fenêtre_principale
Ajoute bouton1 dans barre1
Fais réagir bouton1 à "clic souris" pour Désactiver_grille

Tant que 1 != 2, lis
Temporise
ferme

Fermer_fenêtre_principale :
*f :: formulaire
début
Efface toile
Termine

Fenêtre_nouveau_quadrillage :
début
visible de Fenêtre_nouveau_quadrillage vaut "oui"
Reviens

Fermer_fenêtre_nouveau_quadrillage :
début
visible de Fenêtre_nouveau_quadrillage vaut "non"
Reviens

Générer_quadrillage :
valeur1 & valeur2 & valeur3 & valeur4 :: texte
début
Essaie lis
valeur1 = texte de choix_case_largeur
Convertis valeur1 en nombre_case_largeur
valeur2 = texte de choix_case_hauteur
Convertis valeur2 en nombre_case_hauteur
valeur3 = texte de choix_taille_largeur_case
Convertis valeur3 en taille_largeur_case
valeur4 = texte de choix_taille_hauteur_case
Convertis valeur4 en taille_hauteur_case

// on calcule le nombre de cases à afficher en fonction des dimensions de la fenêtre de scrolling
nombre_case_largeur_effectif = entier (largeur de fond / taille_largeur_case)
nombre_case_hauteur_effectif = entier (hauteur de fond / taille_hauteur_case)
Si nombre_case_largeur_effectif >
nombre_case_largeur, nombre_case_largeur_effectif = nombre_case_largeur
Si nombre_case_hauteur_effectif >
nombre_case_hauteur, nombre_case_hauteur_effectif = nombre_case_hauteur
nombre_case = nombre_case_hauteur_effectif*nombre_case_largeur_effectif
nombre_case_total = nombre_case_hauteur*nombre_case_largeur
ferme

// on vérifie que les données des champs sont valides
Si nombre_case_total == 0, évoque popup.message("Le nombre et/ou la taille des cases ne sont pas valides.")
Sinon lis
visible de Fenêtre_nouveau_quadrillage vaut "non"
Parcours Création_quadrillage
ferme
Reviens

Création_quadrillage :
case :: rectangle, couleur vaut "blanc", hauteur vaut taille_hauteur_case, largeur vaut taille_largeur_case, position vaut 1, plein vaut "oui"
contour_case :: rectangle, couleur vaut "noir", hauteur vaut taille_hauteur_case, largeur vaut taille_largeur_case, position vaut 100, plein vaut "non"
xx :: nombre <
- (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) + largeur de bordure_gauche
yy :: nombre <
- (hauteur de fond - (nombre_case_hauteur_effectif * taille_hauteur_case))/2
début
// ici on dessine des cases pleines
pour chaque nombre_case, lis
ajoute #case dans grille4
déplace grille4{joker} vers xx et yy
projette grille4{joker}

xx = xx + taille_largeur_case
si xx >
(largeur de bordure_gauche + (nombre_case_largeur_effectif * taille_largeur_case) + (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) - taille_largeur_case), lis
xx = (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) + largeur de bordure_gauche
yy = yy + taille_hauteur_case
ferme
ferme

xx = (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) + largeur de bordure_gauche
yy = (hauteur de fond - (nombre_case_hauteur_effectif * taille_hauteur_case))/2

// ici on dessine le contour des cases
pour chaque nombre_case, lis
ajoute #contour_case dans grille5
déplace grille5{joker} vers xx et yy
Projette grille5{joker}
xx = xx + taille_largeur_case
si xx >
(largeur de bordure_gauche + (nombre_case_largeur_effectif * taille_largeur_case) + (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) - taille_largeur_case), lis
xx = (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) + largeur de bordure_gauche
yy = yy + taille_hauteur_case
ferme
ferme

Reviens

Désactiver_grille :
indice est un nombre
début
Mesure grille5 dans indice
Si indice != 0, lis
Si grille_off == faux, lis
grille_off = vrai
Pour chaque indice, efface grille5{joker}
ferme
Sinon lis
grille_off = faux
Pour chaque indice, projette grille5{joker}
ferme
ferme
Reviens

[/php]

Dans ce code, je créer un quadrillage.
Le menu "Activer/Désactiver la grille" sert à effacer le quadrillage de la toile.
Le bouton1 est un raccourci de ce menu et fait donc la même chose.
Bien que ce code fonctionne correctement, j'ai exactement la même chose dans le code de mon programme.
Or, dans ce dernier, seul le bouton1 fonctionne.
Le menu "Activer/Désactiver la grille" ne fonctionne pas.
Pourtant tous les autres menus, disposant également de raccourcis dans la barre d'outils de mon programme, fonctionnent correctement.



J'aimerais également pouvoir modifier les icônes des sous-menus depuis des fonctions :

Exemple :

[php]
globale
form :: formulaire, largeur vaut 400, hauteur vaut 260
m1 :: menu, texte vaut "Menu 1"
m2 :: menu, texte vaut "Menu 2"
sm1 :: sousmenu, texte vaut "Toc toc toc !"
l1 :: étiquette, texte vaut "", x vaut 30, y vaut 100

principale :
début
/*On ajoute le menu principal*/
Ajoute m1 & l1 dans form
/*On ajoute les sous-menus*/
Ajoute m2 dans m1
/*Et les éléments dans ce sous-menus*/
Ajoute sm1 dans m2
Fais réagir sm1 à "clic souris" pour message
tant que vrai, lis
temporise
ferme

message :
*m :: sousmenu
début
texte @ l1 vaut "Le sous-menu fonctionne !"
icône de sm1 = "Icônes\delete_16x16.gif"
Reviens
[/php]

Ainsi, je pourrais mettre une icône de genre case à cocher dans mon sousmenu "Activer/Désactiver la grille" : quand la grille est activée, l'icône est affichée et quand la grille est désactivée, l'icône n'est plus affichée (ou alors il faudrait pouvoir intégrer directement une case à cocher dans le sousmenu...).

descriptionInsérer des sous-menus dans des sous-menus ? EmptyRE: Insérer des sous-menus dans des sous-menus ?

more_horiz
J'ai noté tout ça :-)
J'ai ajouté 3 nouvelles fiches sur googlecode :

https://code.google.com/p/langagelinott ... 1370504027

descriptionInsérer des sous-menus dans des sous-menus ? EmptyRE: Insérer des sous-menus dans des sous-menus ?

more_horiz
Je n'arrive pas à reproduire le problème :
Je peux activer et désactiver autant de fois que je veux sans problème.

descriptionInsérer des sous-menus dans des sous-menus ? EmptyRE: Insérer des sous-menus dans des sous-menus ?

more_horiz
Quelle version de mon éditeur tu utilises ?
Il me semble que c'est la version 0.17, et j'ai refait le test chez moi : le bogue est bien présent.

J'ai également ce bogue qui est toujours présent, bien que beaucoup plus rare :

Wam a écrit:

J'ai encore un autre problème lié aux IHM dans mon programme.

Voici un exemple :

[php]
globale
// Fenêtre principale
Fenêtre_principale :: formulaire, titre vaut "Editeur de cartes", hauteur vaut 800, largeur vaut 1400
popup :: popup

// Toile
fond :: toile, x vaut 0, y vaut 35, hauteur vaut 740, largeur vaut 1400, couleur vaut "blanc", pointeur vaut "flèche"
xtoile :: xtoile, x vaut 0, y vaut 35
bordure_gauche :: rectangle, x vaut 0, y vaut 0, position vaut 1, hauteur vaut hauteur de fond, largeur vaut 150, plein vaut "oui", couleur vaut "blanc"

// Menus
menu1 :: menu, texte vaut "Carte"
menu1s1 :: sousmenu, texte vaut "Nouveau quadrillage"

// Fenêtre nouveau quadrillage
Fenêtre_nouveau_quadrillage :: formulaire, hauteur vaut 140, largeur vaut 300, titre vaut "Nouveau quadrillage", visible vaut "non", x vaut 450, y vaut 255
txt_Fnq1 :: étiquette, texte vaut "Nombre de cases en largeur :", x vaut 10, y vaut 12
txt_Fnq2 :: étiquette, texte vaut "Nombre de cases en hauteur :", x vaut 10, y vaut 32
txt_Fnq3 :: étiquette, texte vaut "Largeur des cases :", x vaut 10, y vaut 52
txt_Fnq4 :: étiquette, texte vaut "Hauteur des cases :", x vaut 10, y vaut 72
choix_case_largeur :: champ, x vaut 200, y vaut 10, taille vaut 3
choix_case_hauteur :: champ, x vaut 200, y vaut 30, taille vaut 3
choix_taille_largeur_case :: champ, x vaut 200, y vaut 50, taille vaut 3
choix_taille_hauteur_case :: champ, x vaut 200, y vaut 70, taille vaut 3
bouton_valider_Fnq :: bouton, texte vaut "Valider", x vaut 70, y vaut 110
bouton_annuler_Fnq :: bouton, texte vaut "Annuler", x vaut 160, y vaut 110

// Quadrillage
taille_largeur_case :: nombre
taille_hauteur_case :: nombre
nombre_case_largeur :: nombre
nombre_case_hauteur :: nombre
nombre_case_largeur_effectif :: nombre
nombre_case_hauteur_effectif :: nombre
nombre_case :: nombre
nombre_case_total :: nombre
copie_index_carte :: nombre

grille4 :: casier de rectangle
grille5 :: casier de rectangle

grille_off :: drapeau

Fenêtre_principale :
début
// Construction des fenêtres

Ajoute txt_Fnq1 & txt_Fnq2 & txt_Fnq3 & txt_Fnq4 & choix_case_largeur & choix_case_hauteur & choix_taille_largeur_case & choix_taille_hauteur_case & bouton_valider_Fnq & bouton_annuler_Fnq dans Fenêtre_nouveau_quadrillage
Fais réagir Fenêtre_nouveau_quadrillage à "clic souris" pour Fermer_fenêtre_nouveau_quadrillage
Fais réagir bouton_annuler_Fnq à "clic souris" pour Fermer_fenêtre_nouveau_quadrillage
Fais réagir bouton_valider_Fnq à "clic souris" pour Générer_quadrillage

// Début du programme

Ajoute xtoile dans Fenêtre_principale
visible de Fenêtre_principale vaut "oui"
Ajoute menu1 dans Fenêtre_principale
Ajoute menu1s1 dans menu1
Fais réagir Fenêtre_principale à "clic souris" pour Fermer_fenêtre_principale
Fais réagir menu1s1 à "clic souris" pour Fenêtre_nouveau_quadrillage

Tant que 1 != 2, lis
Temporise
ferme

Fermer_fenêtre_principale :
*f :: formulaire
début
Efface toile
Termine

Fenêtre_nouveau_quadrillage :
début
visible de Fenêtre_nouveau_quadrillage vaut "oui"
Reviens

Fermer_fenêtre_nouveau_quadrillage :
début
visible de Fenêtre_nouveau_quadrillage vaut "non"
Reviens

Générer_quadrillage :
valeur1 & valeur2 & valeur3 & valeur4 :: texte
début
Essaie lis
valeur1 = texte de choix_case_largeur
Convertis valeur1 en nombre_case_largeur
valeur2 = texte de choix_case_hauteur
Convertis valeur2 en nombre_case_hauteur
valeur3 = texte de choix_taille_largeur_case
Convertis valeur3 en taille_largeur_case
valeur4 = texte de choix_taille_hauteur_case
Convertis valeur4 en taille_hauteur_case

// on calcule le nombre de cases à afficher en fonction des dimensions de la fenêtre de scrolling
nombre_case_largeur_effectif = entier (largeur de fond / taille_largeur_case)
nombre_case_hauteur_effectif = entier (hauteur de fond / taille_hauteur_case)
Si nombre_case_largeur_effectif >
nombre_case_largeur, nombre_case_largeur_effectif = nombre_case_largeur
Si nombre_case_hauteur_effectif >
nombre_case_hauteur, nombre_case_hauteur_effectif = nombre_case_hauteur
nombre_case = nombre_case_hauteur_effectif*nombre_case_largeur_effectif
nombre_case_total = nombre_case_hauteur*nombre_case_largeur
ferme
Sinon lis
évoque popup.message("Le nombre et/ou la taille des cases ne sont pas valides.")
Reviens
ferme

Si nombre_case_total == 0, lis
évoque popup.message("Erreur : veuillez recommencer.")
ferme
Sinon lis
visible de Fenêtre_nouveau_quadrillage vaut "non"
Parcours Création_quadrillage
ferme
Reviens

Création_quadrillage :
case :: rectangle, couleur vaut "blanc", hauteur vaut taille_hauteur_case, largeur vaut taille_largeur_case, position vaut 1, plein vaut "oui"
contour_case :: rectangle, couleur vaut "noir", hauteur vaut taille_hauteur_case, largeur vaut taille_largeur_case, position vaut 100, plein vaut "non"
xx :: nombre <
- (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) + largeur de bordure_gauche
yy :: nombre <
- (hauteur de fond - (nombre_case_hauteur_effectif * taille_hauteur_case))/2
début
// ici on dessine des cases pleines
pour chaque nombre_case, lis
ajoute #case dans grille4
déplace grille4{joker} vers xx et yy
projette grille4{joker}

xx = xx + taille_largeur_case
si xx >
(largeur de bordure_gauche + (nombre_case_largeur_effectif * taille_largeur_case) + (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) - taille_largeur_case), lis
xx = (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) + largeur de bordure_gauche
yy = yy + taille_hauteur_case
ferme
ferme

xx = (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) + largeur de bordure_gauche
yy = (hauteur de fond - (nombre_case_hauteur_effectif * taille_hauteur_case))/2

// ici on dessine le contour des cases
pour chaque nombre_case, lis
ajoute #contour_case dans grille5
déplace grille5{joker} vers xx et yy
Projette grille5{joker}
xx = xx + taille_largeur_case
si xx >
(largeur de bordure_gauche + (nombre_case_largeur_effectif * taille_largeur_case) + (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) - taille_largeur_case), lis
xx = (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) + largeur de bordure_gauche
yy = yy + taille_hauteur_case
ferme
ferme

Reviens
[/php]

Dans ma fonction Générer_quadrillage, j'essaie tout d'abord de récupérer et de convertir les valeurs de mes champs.
Si sa ne fonctionne pas, l'utilisateur ayant indiquer des lettres par exemple, j'affiche ce message d'erreur :
"Le nombre et/ou la taille des cases ne sont pas valides."

Mais j'ai dû ajouter un autre message d'erreur à mon code :
En effet, parfois les valeurs de mes deux premiers champs ne sont pas récupérées.
Du coup, nombre_case_total est à 0 et j'affiche l'erreur suivante :
"Erreur : veuillez recommencer."

Bien entendu, dans cet exemple simple, cette erreur ne se produit jamais.
En revanche, elle est très fréquente dans mon programme, comme pour le bogue de mon menu "Activer/Désactiver le quadrillage".



Parfois, la valeur d'un champ n'est pas récupérée, et parfois, c'est la valeur du champ qui n'est pas convertie en nombre...

(J'ai testé avec différents thèmes et les deux bogues persistent.)

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

J'aimerais également pouvoir griser les sousmenus, de manière à ce que l'utilisateur ne puisse pas les utiliser...

descriptionInsérer des sous-menus dans des sous-menus ? EmptyRE: Insérer des sous-menus dans des sous-menus ?

more_horiz
J'ai refait des tests avec mon sousmenu.

Voici un extrait de mon code :

[php]
globale
Fenêtre_principale :: formulaire, titre vaut "Editeur de cartes", hauteur vaut 800, largeur vaut 1400
fond :: toile, x vaut 0, y vaut 35, hauteur vaut 740, largeur vaut 1400, couleur vaut "blanc", pointeur vaut "flèche"
xtoile :: xtoile, x vaut 0, y vaut 35
menu3s4 :: sousmenu, texte vaut "Activer/désactiver la grille", icône vaut "Icônes\table_borders_16x16.gif"

Fenêtre_principale :
début
Ajoute xtoile dans Fenêtre_principale
visible de Fenêtre_principale vaut "oui"
Ajoute menu1 & menu2 & menu3 dans Fenêtre_principale
Ajoute menu3s1 & menu3s2 & menu3s3 & menu3s4 dans menu3
Fais réagir menu3s4 à "clic souris" pour Désactiver_grille

Tant que 1 != 2, lis
Temporise
ferme

Désactiver_grille :
indice est un nombre
début
"test" !
Mesure grille5 dans indice
Si indice != 0, lis
"test2" !
Si grille_off == faux, lis
"faux" !
grille_off = vrai
Pour chaque indice, lis
"efface joker : ${joker}" !
efface grille5{joker}
ferme
ferme
Sinon lis
"vrai" !
grille_off = faux
Pour chaque indice, lis
"affiche joker : ${joker}" !
projette grille5{joker}
ferme
ferme
ferme
Reviens
[/php]

Et voici le résultat sur le tableau :

test
test2
faux
efface joker : 0
efface joker : 1
efface joker : 2
efface joker : 3
efface joker : 4
efface joker : 5
efface joker : 6
efface joker : 7
efface joker : 8
test
test2
vrai
affiche joker : 0
affiche joker : 1
affiche joker : 2
affiche joker : 3
affiche joker : 4
affiche joker : 5
affiche joker : 6
affiche joker : 7
affiche joker : 8
test
test2
faux
efface joker : 0
efface joker : 1
efface joker : 2
efface joker : 3
efface joker : 4
efface joker : 5
efface joker : 6
efface joker : 7
efface joker : 8
test
test2
vrai
affiche joker : 0
affiche joker : 1
affiche joker : 2
affiche joker : 3
affiche joker : 4
affiche joker : 5
affiche joker : 6
affiche joker : 7
affiche joker : 8

Mon sousmenu fonctionne donc correctement.
Et pourtant, rien ne change sur la xtoile !

En utilisant l'instruction "Montre toile", le problème est moins fréquent, mais existe toujours :

[php]
Désactiver_grille :
indice est un nombre
début
"test" !
Mesure grille5 dans indice
Si indice != 0, lis
"test2" !
Si grille_off == faux, lis
"faux" !
grille_off = vrai
Pour chaque indice, lis
"efface joker : ${joker}" !
efface grille5{joker}
Montre toile
ferme
ferme
Sinon lis
"vrai" !
grille_off = faux
Pour chaque indice, lis
"affiche joker : ${joker}" !
projette grille5{joker}
Montre toile
ferme
ferme
ferme
Reviens
[/php]

Et je rappelle qu'en utilisant le bouton de la barre d'outil "Activer/désactiver la grille", ça fonctionne correctement sans utilisation de l'instruction "Montre toile"...

-----------------------------------------------------------------------
Edit :

C'est bien encore un problème de focus de la toile.

Si j'ouvre une sauvegarde grâce à la méthode "évoque c.sélectionneretouvrir()", une nouvelle fenêtre s'ouvre et la toile perd son focus.
Ainsi, quand je referme la fenêtre, même si ma sauvegarde s'affiche à l'écran, mon sousmenu ne fonctionne pas.

Si je déplace un de mes tiles sur la toile, elle retrouve alors son focus et mon sousmenu fonctionne correctement.

Néanmoins, si j'active mon sousmenu plusieurs fois d'affilé, au bout de quelques essais, il ne fonctionne plus.
La toile semble donc perdre son focus de temps en temps, pour une raison indéterminée.
Et l'utilisation de l'instruction "Montre toile" n'y change rien...

Le bogue concernant les champs (mon post au-dessus) est-il aussi un problème de focus ?

descriptionInsérer des sous-menus dans des sous-menus ? EmptyRE: Insérer des sous-menus dans des sous-menus ?

more_horiz
ok, tu as peut être un pc plus rapide que moi.... c'est une piste que je vais explorer.

pour ce problème : [php]
Parfois, la valeur d'un champ n'est pas récupérée, et parfois, c'est la valeur du champ qui n'est pas convertie en nombre...[/php]

Je n'arrive pas également à le reproduire.

descriptionInsérer des sous-menus dans des sous-menus ? EmptyRE: Insérer des sous-menus dans des sous-menus ?

more_horiz

Et pourtant, rien ne change sur la xtoile !


Peux-tu ajouter ce verbe à la fin de ton action et me dire si ça fonctionne mieux :
[php]rafraîchis[/php]

descriptionInsérer des sous-menus dans des sous-menus ? EmptyRE: Insérer des sous-menus dans des sous-menus ?

more_horiz
Ça fonctionne en utilisant le verbe Rafraîchir x)
Merci.

descriptionInsérer des sous-menus dans des sous-menus ? EmptyRE: Insérer des sous-menus dans des sous-menus ?

more_horiz
ok, je vais corriger ça pour la prochaine version !

descriptionInsérer des sous-menus dans des sous-menus ? EmptyRe: Insérer des sous-menus dans des sous-menus ?

more_horiz
privacy_tip Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
power_settings_newSe connecter pour répondre