1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
| cAssistant est une classe
m_nPlanActif est un entier // Numero du plan encours (entre 1 et 20)
m_tabPlan est un tableau statique de 50 entiers // Tableau contenant l'enchainement des plans "précédents"
m_nIndPlanPrecedent est un entier // Indice du plan précédent dans le tableau
m_sNomFen est une chaîne
FIN
PROCEDURE Constructeur(sNomFen)
:m_nIndPlanPrecedent=0 // pas de plan précédent dans le tableau d'enchainement
:m_sNomFen = sNomFen
PROCEDURE Destructeur()
PROCEDURE PRIVÉE CAssist::ChangePlan(nPlan)
// Change le plan en cours dans la fenêtre assistant
// controle de dépassement
SI nPlan<1 OU nPlan >20 ALORS
Erreur("CAssist:ChangePlan: Dépassement du nombre maximum de plans")
SINON
// si on passe au premier plan, le bouton <précédent> est grisé
SI nPlan=1 ALORS
{:m_sNomFen+".BTN_PRECEDENT"}..Etat=Grisé
SINON
{:m_sNomFen+".BTN_PRECEDENT"}..Etat=Actif
FIN
// si on passe au dernier plan, le bouton <suivant> devient <terminer>
SI nPlan=20 ALORS
{:m_sNomFen+".BTN_SUIVANT"}..Libellé="&Terminer"
ELSE
{:m_sNomFen+".BTN_SUIVANT"}..Libellé="&Suivant >"
FIN
// activation du plan
{:m_sNomFen}..Plan = nPlan
// le plan encours devient le nouveau plan
:m_nPlanActif=nPlan
FIN
PROCEDURE VIRTUELLE CAssist::Initialisation()
// Initialisatin générale (effectuée une seule fois au début)
ExécuteTraitement(:m_sNomFen+".OnInitPlan",trtProcédure,0)
// l'assistant commence sur le plan 1
:ChangePlan(1)
// Initialisation du premier plan
ExécuteTraitement(:m_sNomFen+".OnInitPlan",trtProcédure,1)
// Procedure appeléepar le bouton "annuler" de l'assistant
PROCEDURE VIRTUELLE CAssist::OnAnnuler()
// fermeture de l'assistant
Ferme()
PROCEDURE CAssist::OnPrecedent()
// Méthode appelée par le bouton précédent de l'assistant
// passe au plan précédent dans le tableau des successions de plans
:ChangePlan(:m_tabPlan[:m_nIndPlanPrecedent])
// Initialisation du nouveau plan
ExécuteTraitement(:m_sNomFen+".OnInitPlan",trtProcédure,:m_nPlanActif)
// décrémentation de l'indice du plan précédent dans le tableau d'enchainement des plans
:m_nIndPlanPrecedent--
// contrôle de l'indice
IF :m_nIndPlanPrecedent<0 ALORS Erreur("CAssist:PlanPrecedent: indice min du tableau dépassé")
PROCEDURE CAssist::OnSuivant()
// Méthode appelée par le bouton "suivant" ou "terminer" de l'assistant
// controle des bornes
IF (:m_nPlanActif < 1) OU (:m_nPlanActif > 20) ALORS Erreur("CAssist:Suivant() : indice de plan hors borne")
// si le controle du plan n'est pas valide on reste sur ce plan
SI ExécuteTraitement(:m_sNomFen+".bOnControlPlan",trtProcédure,:m_nPlanActif)=Faux ALORS RETOUR
// si on est sur le dernier plan
SI :m_nPlanActif=20 ALORS
// Action finale
:OnTerminer()
SINON
// Actionne le sablier
Sablier(Vrai)
// Lance l'action associé au plan encours, si c'est réussie on passe au plan suivant
SI ExécuteTraitement(:m_sNomFen+".bOnActionPlan",trtProcédure,:m_nPlanActif) ALORS
// on ajoute un plan précédent dans le tableau d'enchainement des plans
:m_nIndPlanPrecedent++
// le plan précédent est le plan encours
:m_tabPlan[:m_nIndPlanPrecedent]=:m_nPlanActif
// On passe sur le plan suivant
:ChangePlan(ExécuteTraitement(:m_sNomFen+".nOnPlanSuivant",trtProcédure,:m_nPlanActif))
// On appel la fonction d'init du nouveau plan
ExécuteTraitement(:m_sNomFen+".OnInitPlan",trtProcédure,:m_nPlanActif)
FIN
// Désactionne le sablier
Sablier(Faux)
FIN
PROCEDURE VIRTUELLE CAssist::OnTerminer()
// Appel du OnTerminer de la fenêtre
ExécuteTraitement(:m_sNomFen+".OnTerminer",trtProcédure) |
Partager