En fait, je ne comprend pas d'où vient ce problème d'initialisation des évènements.
Je poste un exemple :
[php]
Editeur de cartes :
Grands rôles :
("Fenêtre principale")
Fenêtre_principale est un formulaire, hauteur vaut 828, largeur vaut 800, titre vaut "Editeur de cartes"
("Fenêtre_avertissement")
Fenêtre_avertissement est un formulaire, hauteur vaut 110, largeur vaut 400, titre vaut "Attention", visible vaut "non", x vaut 450, y vaut 255
txt_Fa1 est une étiquette, texte vaut "", x vaut 170, y vaut 10
txt_Fa2 est une étiquette, texte vaut "", x vaut 60, y vaut 30
bouton_valider_Fa est un bouton, texte vaut "Ok", x vaut 100, y vaut 80
bouton_annuler_Fa est un bouton, texte vaut "Annuler", x vaut 200, y vaut 80
("Fenêtre nouveau quadrillage")
Fenêtre_nouveau_quadrillage est un formulaire, hauteur vaut 140, largeur vaut 300, titre vaut "Nouveau quadrillage", visible vaut "non", x vaut 450, y vaut 255
txt_Fnq1 est une étiquette, texte vaut "Nombre de cases en largeur :", x vaut 10, y vaut 10
txt_Fnq2 est une étiquette, texte vaut "Nombre de cases en hauteur :", x vaut 10, y vaut 30
txt_Fnq3 est une étiquette, texte vaut "Largeur des cases :", x vaut 10, y vaut 50
txt_Fnq4 est une étiquette, texte vaut "Hauteur des cases :", x vaut 10, y vaut 70
choix_case_largeur est un sélecteur, valeurs vaut "", x vaut 200, y vaut 10
choix_case_hauteur est un sélecteur, valeurs vaut "", x vaut 200, y vaut 30
choix_taille_largeur_case est un sélecteur, valeurs vaut "", x vaut 200, y vaut 50
choix_taille_hauteur_case est un sélecteur, valeurs vaut "", x vaut 200, y vaut 70
bouton_valider_Fnq est un bouton, texte vaut "Valider", x vaut 70, y vaut 110
bouton_annuler_Fnq est un bouton, texte vaut "Annuler", x vaut 160, y vaut 110
("Menus")
menu2 est un menu, texte vaut "Carte"
menu2s1 est un sousmenu, texte vaut "Nouveau quadrillage"
("Toile")
fond est une toile, hauteur vaut 800, largeur vaut 800, couleur vaut "blanc", pointeur vaut "flèche"
xtoile est une xtoile, x vaut 0, y vaut 0
bordure_gauche est un rectangle, x = 0, y = 0, position vaut 1, hauteur vaut hauteur de fond, largeur vaut 150, plein vaut "oui", couleur vaut "blanc"
("Quadrillage")
taille_largeur_case est un nombre
taille_hauteur_case est un nombre
nombre_case_largeur est un nombre
nombre_case_hauteur est un nombre
nombre_case_largeur_effectif est un nombre
nombre_case_hauteur_effectif est un nombre
nombre_case est un nombre
grille4 est un casier de rectangle
grille5 est un casier de rectangle
Fenêtre_principale :
Rôles :
Actions :
Tu ajoutes xtoile dans Fenêtre_principale
visible de Fenêtre_principale vaut "oui"
Tu ajoutes menu2 dans Fenêtre_principale
Tu ajoutes menu2s1 dans menu2
Tu fais réagir Fenêtre_principale à "clic souris" pour Fermer_fenêtre_principale
Tu fais réagir menu2s1 à "clic souris" pour Fenêtre_nouveau_quadrillage
Efface la toile
Projette le fond & bordure_gauche
tant que 1 est différent de 2, lis
temporise
ferme
Fenêtre_avertissement :
Rôles :
Actions :
visible de Fenêtre_avertissement vaut "oui"
Tu ajoutes txt_Fa1 & txt_Fa2 & bouton_valider_Fa & bouton_annuler_Fa dans Fenêtre_avertissement
texte de txt_Fa1 vaut "Attention" ;
x de txt_Fa1 vaut 170 ;
y de txt_Fa1 vaut 10
texte de txt_Fa2 vaut "Toutes vos données vont être effacées" ;
x de txt_Fa2 vaut 85 ;
y de txt_Fa2 vaut 30
Tu fais réagir Fenêtre_avertissement à "clic souris" pour Fermer_fenêtre_avertissement
Tu fais réagir bouton_valider_Fa à "clic souris" pour Fermer_fenêtre_avertissement
Tu fais réagir bouton_valider_Fa à "clic souris" pour Réinitialisation
Tu fais réagir bouton_annuler_Fa à "clic souris" pour Fermer_fenêtre_avertissement
Tu fais réagir bouton_annuler_Fa à "clic souris" pour Fermer_fenêtre_nouveau_quadrillage
Fenêtre_nouveau_quadrillage :
Rôles :
§ i est un nombre
Actions :
visible de Fenêtre_nouveau_quadrillage vaut "oui"
Tu ajoutes 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
Tu fais réagir Fenêtre_nouveau_quadrillage à "clic souris" pour Fermer_fenêtre_nouveau_quadrillage
Tu fais réagir bouton_annuler_Fnq à "clic souris" pour Fermer_fenêtre_nouveau_quadrillage
Tu fais réagir bouton_valider_Fnq à "clic souris" pour Générer_quadrillage
Pour i de 1 à 100, lis
Tu ajoutes i +"|" dans valeurs@choix_case_largeur
Tu ajoutes i +"|" dans valeurs@choix_case_hauteur
Tu ajoutes i +"|" dans valeurs@choix_taille_largeur_case
Tu ajoutes i +"|" dans valeurs@choix_taille_hauteur_case
Tu fermes
Fermer_fenêtre_principale :
Rôles :
*f :: formulaire
Actions :
Efface la toile
Tu termines
Fermer_fenêtre_avertissement :
Rôles :
Actions :
visible de Fenêtre_avertissement vaut "non"
Tu reviens
Fermer_fenêtre_nouveau_quadrillage :
Rôles :
Actions :
visible de Fenêtre_nouveau_quadrillage vaut "non"
Tu reviens
Générer_quadrillage :
Rôles :
§ valeur1 est un texte
§ valeur2 est un texte
§ valeur3 est un texte
§ valeur4 est un texte
Actions :
Si nombre_case != 0 alors va vers Fenêtre_avertissement
valeur1 = valeur@choix_case_largeur
Tu convertis valeur1 en nombre_case_largeur
valeur2 = valeur@choix_case_hauteur
Tu convertis valeur2 en nombre_case_hauteur
valeur3 = valeur@choix_taille_largeur_case
Tu convertis valeur3 en taille_largeur_case
valeur4 = valeur@choix_taille_hauteur_case
Tu convertis valeur4 en taille_hauteur_case
nombre_case_largeur_effectif = entier ((largeur de fond - largeur de bordure_gauche) / taille_largeur_case)
nombre_case_hauteur_effectif = entier (hauteur de fond / taille_hauteur_case)
Si nombre_case_largeur_effectif >
nombre_case_largeur alors nombre_case_largeur_effectif = nombre_case_largeur
Si nombre_case_hauteur_effectif >
nombre_case_hauteur alors nombre_case_hauteur_effectif = nombre_case_hauteur
nombre_case = nombre_case_hauteur_effectif*nombre_case_largeur_effectif
visible de Fenêtre_nouveau_quadrillage vaut "non"
Tu vas vers Affichage_quadrillage
Affichage_quadrillage :
Rôles :
§ case est un rectangle, couleur vaut "blanc", hauteur vaut taille_hauteur_case, largeur vaut taille_largeur_case, position vaut 1, plein vaut "oui"
§ contour_case est un rectangle, couleur vaut "noir", hauteur vaut taille_hauteur_case, largeur vaut taille_largeur_case, position vaut 100, plein vaut "non"
xx est un nombre <
- (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) + largeur de bordure_gauche
yy est un nombre <
- (hauteur de fond - (nombre_case_hauteur_effectif * taille_hauteur_case))/2
Actions :
("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}
yy = yy + taille_hauteur_case
si yy est plus grand que (((hauteur de fond - (nombre_case_hauteur_effectif * taille_hauteur_case))/2) + (nombre_case_hauteur_effectif * taille_hauteur_case)) - taille_hauteur_case alors lis
yy = (hauteur de fond - (nombre_case_hauteur_effectif * taille_hauteur_case))/2
xx = xx + taille_largeur_case
ferme
si xx est plus grand que 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)) alors lis
xx = (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) + largeur de bordure_gauche
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}
yy = yy + taille_hauteur_case
si yy est plus grand que (((hauteur de fond - (nombre_case_hauteur_effectif * taille_hauteur_case))/2) + (nombre_case_hauteur_effectif * taille_hauteur_case)) - taille_hauteur_case alors lis
yy = (hauteur de fond - (nombre_case_hauteur_effectif * taille_hauteur_case))/2
xx = xx + taille_largeur_case
ferme
si xx est plus grand que 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)) alors lis
xx = (((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_largeur_case))/2) + largeur de bordure_gauche
ferme
ferme
Réinitialisation :
Rôles :
§ indice est un nombre
Actions :
taille_largeur_case = 0
taille_hauteur_case = 0
nombre_case_largeur = 0
nombre_case_hauteur = 0
nombre_case_largeur_effectif = 0
nombre_case_hauteur_effectif = 0
nombre_case = 0
Mesure grille4 dans indice
pour chaque indice, lis
Efface (grille4{0})
tu ôtes (grille4{0}) de grille4
ferme
Mesure grille5 dans indice
pour chaque indice, lis
Efface (grille5{0})
tu ôtes (grille5{0}) de grille5
ferme
Efface la toile
Projette le fond & bordure_gauche
Va vers Générer_quadrillage
[/php]
Dans cet exemple, on dessine un quadrillage.
Si on retourne dans le menu "nouveau quadrillage", on peut alors effacer le quadrillage pour en dessiner un nouveau.
Or, la fonction "réinitialisation" va s'activer plusieurs fois jusqu'à faire planter le programme.
Je n'arrive pas à comprendre pourquoi un tel problème existe et comment je dois écrire mon code pour que mon programme fonctionne correctement.