PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Sortir d'une procédure
Sortir d'une procédure
Débuté par webtoots, 30 jan. 2006 12:24 - 8 réponses
Posté le 30 janvier 2006 - 12:24
Bonjour,

Je fait appelle a une procedure faite de boucles mais j'amerais que cette procédure s'arrete par un simple enfoncement de la touche echap. J'ai essayer de mettre ceci dans la procédure au début de chaque boucle:

SI _EVE.wParam = VK_ESCAPE ALORS SORTIR

mais apparement il n'y a rien qui se passe. J'ai essayé de mettre cette condition dans la fenetre dans la partie des touches enfoncé mais tant que la procédure n'ets pas fini il ne prend rien en compte.

Comment faire pour arrêter le traitement de cette procédure à n'importe quel moment?
Posté le 30 janvier 2006 - 09:39
envoi le code de la procédure stp
Posté le 30 janvier 2006 - 10:08
PROCEDURE Par_saisons_avec_qualité_tt_atelier()

v_stop=Faux

SI log_niveau="A" ALORS

HExécuteRequête(req_select_classement_moyennes,hRequêteDéfaut,test_chaine,test_chaine2)
TableAffiche(Table_req_select_classement_moyennes)
nbr_divers=TableOccurrence(Table_req_select_classement_moyennes)

//initialisation de la jauge1
j_borne_max=nbr_divers
x=1
Jauge1..BorneMax=j_borne_max

TANTQUE nbr_divers<>0


FenRepeint()
//progression de la jauge1
Jauge1=x
lbl_jauge0-PartieEntière((j_borne_max-x)*100/j_borne_max) + "% "
x=(j_borne_max-nbr_divers)+1

TableSelectPlus(Table_req_select_classement_moyennes,1)
TableInsère(Table_moyennes_journalieres,Table_req_select_classement_moyennes.Moy_Date+TAB+Table_req_select_classement_moyennes.Moy_Matricule+TAB+Table_req_select_classement_moyennes.Nom+TAB+Table_req_select_classement_moyennes.Moy_Moy)
TableSupprime(Table_req_select_classement_moyennes)
TableSelectPlus(Table_moyennes_journalieres,1)
TANTQUE TableCherche(Table_req_select_classement_moyennes.Matricule,Table_moyennes_journalieres.Matricule,Vrai)<>-1
TableSelectPlus(Table_req_select_classement_moyennes,TableCherche(Table_req_select_classement_moyennes.Matricule,Table_moyennes_journalieres.Matricule,Vrai))
TableInsère(Table_moyennes_journalieres,Table_req_select_classement_moyennes.Moy_Date+TAB+Table_req_select_classement_moyennes.Moy_Matricule+TAB+Table_req_select_classement_moyennes.Nom+TAB+Table_req_select_classement_moyennes.Moy_Moy)
TableSupprime(Table_req_select_classement_moyennes)
FIN
nbr_divers2=TableOccurrence(Table_moyennes_journalieres)
y=1
TANTQUE nbr_divers2<>0
FenRepeint()
//progression de la jauge2
Jauge2=y
y=(j_borne_max-nbr_divers2)+1

TableSelectPlus(Table_moyennes_journalieres,1)
TableInsère(Table_moyennes_journalieres1,Table_moyennes_journalieres.Date+TAB+Table_moyennes_journalieres.Matricule+TAB+Table_moyennes_journalieres.Nom+TAB+Table_moyennes_journalieres.Moyenne)
TableSupprime(Table_moyennes_journalieres)
TableSelectPlus(Table_moyennes_journalieres1,1)
TANTQUE TableCherche(Table_moyennes_journalieres.Date,Table_moyennes_journalieres1.Date,Vrai)<>-1
TableSelectPlus(Table_moyennes_journalieres,TableCherche(Table_moyennes_journalieres.Date,Table_moyennes_journalieres1.Date,Vrai))
TableInsère(Table_moyennes_journalieres1,Table_moyennes_journalieres.Date+TAB+Table_moyennes_journalieres.Matricule+TAB+Table_moyennes_journalieres.Nom+TAB+Table_moyennes_journalieres.Moyenne)
TableSupprime(Table_moyennes_journalieres)
FIN
TableSelectPlus(Table_moyennes_journalieres1,1)

TableInsère(Table_moyennes_mensuelles,Table_moyennes_journalieres1.Date+TAB+mois_en_lettres(Milieu(Table_moyennes_journalieres1.Date,5,2))+TAB+Table_moyennes_journalieres1.Matricule+TAB+Table_moyennes_journalieres1.Nom+TAB+Table_moyennes_journalieres1.Moyenne[ligneMoyenne])
TableSupprimeTout(Table_moyennes_journalieres1)
nbr_divers2=TableOccurrence(Table_moyennes_journalieres)
FIN
nbr_divers3=TableOccurrence(Table_moyennes_mensuelles)
TANTQUE nbr_divers3<>0
FenRepeint()
TableSelectPlus(Table_moyennes_mensuelles,1)
TableInsère(Table_moyennes_mensuelles1,Table_moyennes_mensuelles.Date+TAB+Table_moyennes_mensuelles.mois+TAB+Table_moyennes_mensuelles.Matricule+TAB+Table_moyennes_mensuelles.Nom+TAB+Table_moyennes_mensuelles.Moyenne)
TableSupprime(Table_moyennes_mensuelles)
TableSelectPlus(Table_moyennes_mensuelles1,1)
TANTQUE TableCherche(Table_moyennes_mensuelles.mois,Table_moyennes_mensuelles1.mois,Vrai)<>-1
TableSelectPlus(Table_moyennes_mensuelles,TableCherche(Table_moyennes_mensuelles.mois,Table_moyennes_mensuelles1.mois,Vrai))
TableInsère(Table_moyennes_mensuelles1,Table_moyennes_mensuelles.Date+TAB+Table_moyennes_mensuelles.mois+TAB+Table_moyennes_mensuelles.Matricule+TAB+Table_moyennes_mensuelles.Nom+TAB+Table_moyennes_mensuelles.Moyenne)
TableSupprime(Table_moyennes_mensuelles)
FIN
TableTrie(Table_moyennes_mensuelles1,"+Date")
TableSelectPlus(Table_moyennes_mensuelles1,1)

TableInsère(Table_moyennes_mensuelles2,Table_moyennes_mensuelles1.Date+TAB+Table_moyennes_mensuelles1.mois+TAB+Table_moyennes_mensuelles1.Matricule+TAB+Table_moyennes_mensuelles1.Nom+TAB+Table_moyennes_mensuelles1.Moyenne[ligneMoyenne]+TAB+Table_moyennes_mensuelles1.Date[ligneComptage])
TableSupprimeTout(Table_moyennes_mensuelles1)
nbr_divers3=TableOccurrence(Table_moyennes_mensuelles)
FIN
TableTrie(Table_moyennes_mensuelles2,"+Date")
TableSelectPlus(Table_moyennes_mensuelles2,1)
//repartition des mois
q_nbr=0
SI TableCherche(Table_moyennes_mensuelles2.mois,Table_req_select_saisons.Mois1,Vrai)<>-1 ALORS
FenRepeint()
TableSelectPlus(Table_moyennes_mensuelles2,TableCherche(Table_moyennes_mensuelles2.mois,Table_req_select_saisons.Mois1,Vrai))
m_mois1=Table_moyennes_mensuelles2.Moyenne
j_mois1=Table_moyennes_mensuelles2.nbr_jours
HExécuteRequête(req_select_moy_emballage2,hRequêteDéfaut,Table_moyennes_mensuelles2.Matricule,mois_en_chiffre(Table_req_select_saisons.Mois1),Gauche(Table_moyennes_mensuelles2.Date,4))
TableAffiche(Table_req_select_moy_emballage2)
HExécuteRequête(req_select_moy_etiquetage2,hRequêteDéfaut,Table_moyennes_mensuelles2.Matricule,mois_en_chiffre(Table_req_select_saisons.Mois1),Gauche(Table_moyennes_mensuelles2.Date,4))
TableAffiche(Table_req_select_moy_etiquetage2)
q_emb=Table_req_select_moy_emballage2.moyenne[ligneMoyenne]
q_eti=Table_req_select_moy_etiquetage2.moyenne[ligneMoyenne]
SI q_emb<>0 ET q_eti <>0 ALORS
q_mois1=(q_emb+q_eti)/2
q_nbr=q_nbr+1
FIN
SI q_emb=0 ET q_eti <>0 ALORS
q_mois1=q_eti
q_nbr=q_nbr+1
FIN
SI q_emb<>0 ET q_eti =0 ALORS
q_mois1=q_emb
q_nbr=q_nbr+1
FIN
SI q_emb=0 ET q_eti=0 ALORS
q_mois1=0
FIN
HExécuteRequête(req_select_nbr_jour_q_emballage,hRequêteDéfaut,Table_moyennes_mensuelles2.Matricule,Gauche(Table_moyennes_mensuelles2.Date,4),mois_en_chiffre(Table_req_select_saisons.Mois1))
TableAffiche(Table_req_select_nbr_jour_q_emballage)
qj_mois1=TableOccurrence(Table_req_select_nbr_jour_q_emballage)+TableOccurrence(Table_req_select_moy_etiquetage2)
SINON
m_mois1=0
j_mois1=0
q_mois1=0
FIN
mois_en_lettres(Table_req_select_saisons.Mois1)
SI TableCherche(Table_moyennes_mensuelles2.mois,Table_req_select_saisons.Mois2,Vrai)<>-1 ALORS
FenRepeint()
TableSelectPlus(Table_moyennes_mensuelles2,TableCherche(Table_moyennes_mensuelles2.mois,Table_req_select_saisons.Mois2,Vrai))
m_mois2=Table_moyennes_mensuelles2.Moyenne
j_mois2=Table_moyennes_mensuelles2.nbr_jours
HExécuteRequête(req_select_moy_emballage2,hRequêteDéfaut,Table_moyennes_mensuelles2.Matricule,mois_en_chiffre(Table_req_select_saisons.Mois2),Gauche(Table_moyennes_mensuelles2.Date,4))
TableAffiche(Table_req_select_moy_emballage2)
HExécuteRequête(req_select_moy_etiquetage2,hRequêteDéfaut,Table_moyennes_mensuelles2.Matricule,mois_en_chiffre(Table_req_select_saisons.Mois2),Gauche(Table_moyennes_mensuelles2.Date,4))
TableAffiche(Table_req_select_moy_etiquetage2)
q_emb=Table_req_select_moy_emballage2.moyenne[ligneMoyenne]
q_eti=Table_req_select_moy_etiquetage2.moyenne[ligneMoyenne]
SI q_emb<>0 ET q_eti <>0 ALORS
q_mois2=(q_emb+q_eti)/2
q_nbr=q_nbr+1
FIN
SI q_emb=0 ET q_eti <>0 ALORS
q_mois2=q_eti
q_nbr=q_nbr+1
FIN
SI q_emb<>0 ET q_eti =0 ALORS
q_nbr=q_nbr+1
q_mois2=q_emb
FIN
SI q_emb=0 ET q_eti=0 ALORS
q_mois2=0
FIN
HExécuteRequête(req_select_nbr_jour_q_emballage,hRequêteDéfaut,Table_moyennes_mensuelles2.Matricule,Gauche(Table_moyennes_mensuelles2.Date,4),mois_en_chiffre(Table_req_select_saisons.Mois2))
TableAffiche(Table_req_select_nbr_jour_q_emballage)
qj_mois2=TableOccurrence(Table_req_select_nbr_jour_q_emballage)+TableOccurrence(Table_req_select_moy_etiquetage2)
SINON
m_mois2=0
j_mois2=0
q_mois2=0
FIN
mois_en_lettres(Table_req_select_saisons.Mois2)
SI TableCherche(Table_moyennes_mensuelles2.mois,Table_req_select_saisons.Mois3,Vrai)<>-1 ALORS
FenRepeint()
TableSelectPlus(Table_moyennes_mensuelles2,TableCherche(Table_moyennes_mensuelles2.mois,Table_req_select_saisons.Mois3,Vrai))
m_mois3=Table_moyennes_mensuelles2.Moyenne
j_mois3=Table_moyennes_mensuelles2.nbr_jours
HExécuteRequête(req_select_moy_emballage2,hRequêteDéfaut,Table_moyennes_mensuelles2.Matricule,mois_en_chiffre(Table_req_select_saisons.Mois3),Gauche(Table_moyennes_mensuelles2.Date,4))
TableAffiche(Table_req_select_moy_emballage2)
HExécuteRequête(req_select_moy_etiquetage2,hRequêteDéfaut,Table_moyennes_mensuelles2.Matricule,mois_en_chiffre(Table_req_select_saisons.Mois3),Gauche(Table_moyennes_mensuelles2.Date,4))
TableAffiche(Table_req_select_moy_etiquetage2)
q_emb=Table_req_select_moy_emballage2.moyenne[ligneMoyenne]
q_eti=Table_req_select_moy_etiquetage2.moyenne[ligneMoyenne]
SI q_emb<>0 ET q_eti <>0 ALORS
q_mois3=(q_emb+q_eti)/2
q_nbr=q_nbr+1
FIN
SI q_emb=0 ET q_eti <>0 ALORS
q_mois3=q_eti
q_nbr=q_nbr+1
FIN
SI q_emb<>0 ET q_eti =0 ALORS
q_mois3=q_emb
q_nbr=q_nbr+1
FIN
SI q_emb=0 ET q_eti=0 ALORS
q_mois3=0
FIN
HExécuteRequête(req_select_nbr_jour_q_emballage,hRequêteDéfaut,Table_moyennes_mensuelles2.Matricule,Gauche(Table_moyennes_mensuelles2.Date,4),mois_en_chiffre(Table_req_select_saisons.Mois3))
TableAffiche(Table_req_select_nbr_jour_q_emballage)
qj_mois3=TableOccurrence(Table_req_select_nbr_jour_q_emballage)+TableOccurrence(Table_req_select_moy_etiquetage2)
SINON
m_mois3=0
j_mois3=0
q_mois3=0
FIN
mois_en_lettres(Table_req_select_saisons.Mois3)
SI TableCherche(Table_moyennes_mensuelles2.mois,Table_req_select_saisons.Mois4,Vrai)<>-1 ALORS
FenRepeint()
TableSelectPlus(Table_moyennes_mensuelles2,TableCherche(Table_moyennes_mensuelles2.mois,Table_req_select_saisons.Mois4,Vrai))
m_mois4=Table_moyennes_mensuelles2.Moyenne
j_mois4=Table_moyennes_mensuelles2.nbr_jours
HExécuteRequête(req_select_moy_emballage2,hRequêteDéfaut,Table_moyennes_mensuelles2.Matricule,mois_en_chiffre(Table_req_select_saisons.Mois4),Gauche(Table_moyennes_mensuelles2.Date,4))
TableAffiche(Table_req_select_moy_emballage2)
HExécuteRequête(req_select_moy_etiquetage2,hRequêteDéfaut,Table_moyennes_mensuelles2.Matricule,mois_en_chiffre(Table_req_select_saisons.Mois4),Gauche(Table_moyennes_mensuelles2.Date,4))
TableAffiche(Table_req_select_moy_etiquetage2)
q_emb=Table_req_select_moy_emballage2.moyenne[ligneMoyenne]
q_eti=Table_req_select_moy_etiquetage2.moyenne[ligneMoyenne]
SI q_emb<>0 ET q_eti <>0 ALORS
q_mois4=(q_emb+q_eti)/2
q_nbr=q_nbr+1
FIN
SI q_emb=0 ET q_eti <>0 ALORS
q_mois4=q_eti
q_nbr=q_nbr+1
FIN
SI q_emb<>0 ET q_eti =0 ALORS
q_mois4=q_emb
q_nbr=q_nbr+1
FIN
SI q_emb=0 ET q_eti=0 ALORS
q_mois4=0
FIN
HExécuteRequête(req_select_nbr_jour_q_emballage,hRequêteDéfaut,Table_moyennes_mensuelles2.Matricule,Gauche(Table_moyennes_mensuelles2.Date,4),mois_en_chiffre(Table_req_select_saisons.Mois4))
TableAffiche(Table_req_select_nbr_jour_q_emballage)
qj_mois4=TableOccurrence(Table_req_select_nbr_jour_q_emballage)+TableOccurrence(Table_req_select_moy_etiquetage2)
SINON
m_mois4=0
j_mois4=0
q_mois4=0
FIN
mois_en_lettres(Table_req_select_saisons.Mois4)
SI q_nbr=0 ALORS
TableInsère(Table_saisons1,Table_moyennes_mensuelles2.Date+TAB+Table_moyennes_mensuelles2.Matricule+TAB+Table_moyennes_mensuelles2.Nom+TAB+m_mois1+TAB+j_mois1+TAB+q_mois1+TAB+qj_mois1+TAB+m_mois2+TAB+j_mois2+TAB+q_mois2+TAB+qj_mois2+TAB+m_mois3+TAB+j_mois3+TAB+q_mois3+TAB+qj_mois3+TAB+m_mois4+TAB+j_mois4+TAB+q_mois4+TAB+qj_mois4+TAB+Table_moyennes_mensuelles2.Moyenne[ligneMoyenne]+TAB+(j_mois1+j_mois2+j_mois3+j_mois4)+TAB+((q_mois1+q_mois2+q_mois3+q_mois4)/1)+TAB+(qj_mois1+qj_mois2+qj_mois3+qj_mois4)+TAB+Table_moyennes_mensuelles2.Moyenne[ligneMoyenne])
SINON
TableInsère(Table_saisons1,Table_moyennes_mensuelles2.Date+TAB+Table_moyennes_mensuelles2.Matricule+TAB+Table_moyennes_mensuelles2.Nom+TAB+m_mois1+TAB+j_mois1+TAB+q_mois1+TAB+qj_mois1+TAB+m_mois2+TAB+j_mois2+TAB+q_mois2+TAB+qj_mois2+TAB+m_mois3+TAB+j_mois3+TAB+q_mois3+TAB+qj_mois3+TAB+m_mois4+TAB+j_mois4+TAB+q_mois4+TAB+qj_mois4+TAB+Table_moyennes_mensuelles2.Moyenne[ligneMoyenne]+TAB+(j_mois1+j_mois2+j_mois3+j_mois4)+TAB+((q_mois1+q_mois2+q_mois3+q_mois4)/q_nbr)+TAB+(qj_mois1+qj_mois2+qj_mois3+qj_mois4)+TAB+((Table_moyennes_mensuelles2.Moyenne[ligneMoyenne]+(q_mois1+q_mois2+q_mois3+q_mois4)/q_nbr))/2)
FIN
TableSupprimeTout(Table_moyennes_mensuelles2)
nbr_divers=TableOccurrence(Table_req_select_classement_moyennes)

Multitâche(1)
SI v_stop=Vrai ALORS Ferme(Popup_classement)

FIN
SELON Sélecteur2
CAS 1:
TableTrie(Table_saisons1,"+Nom")
Ordre="Liste triée par ordre alphabétique"
CAS 2:
TableTrie(Table_saisons1,"+Moyenne_totale")
Ordre="Liste triée par ordre croissant des moyennes"
CAS 3:
TableTrie(Table_saisons1,"-Moyenne_totale")
Ordre="Liste triée par ordre décroissant des moyennes"
FIN

mois_en_lettres(Table_req_select_saisons.Mois1)
mois_en_lettres(Table_req_select_saisons.Mois2)
mois_en_lettres(Table_req_select_saisons.Mois3)
mois_en_lettres(Table_req_select_saisons.Mois4)

iAperçu(i100)
iImprimeEtat(Moyennes_de_rendement_et_de_la_qualité_sur_une_saison,Libellé4,"l'administrateur",Table_req_select_saisons.Intitule,Table_req_select_saisons.Mois1,Table_req_select_saisons.Mois2,Table_req_select_saisons.Mois3,Table_req_select_saisons.Mois4,Ordre)

FIN
Posté le 30 janvier 2006 - 10:27
Précision le multitache est à 1 et pas -1 car, à 1, la procédure arrive à détecter la touche de l'événement ou du bouton. D'un autre coté,dans un premier temps, j'ai demandé à ce que la fenetre soit fermé .
Posté le 30 janvier 2006 - 10:37
c'est bon j'ai trouvé.

Dans la procédure :

PROCEDURE TOUCHE_ESC()
SI _EVE.lParame537 ALORS v_stop=Vrai

j'ai enlevé :
SI _EVE.lParame537

j'ai cherché à quoi cela correspondait dans l'aide de windev et apparement dans les constantes de l'API Windows 32 , c'est ca :
VOS_DOS_WINDOWS16 = 65537

Ne sachant pas du tout ce qu'est: VOS_DOS_WINDOWS16
je l'ai zappé et ca roule.


Merci de votre aide.
Posté le 30 janvier 2006 - 15:00
Toots a écrit :
Bonjour,

Je fait appelle a une procedure faite de boucles mais j'amerais que cette procédure s'arrete par un simple enfoncement de la touche echap. J'ai essayer de mettre ceci dans la procédure au début de chaque boucle:

SI _EVE.wParam = VK_ESCAPE ALORS SORTIR

mais apparement il n'y a rien qui se passe. J'ai essayé de mettre cette condition dans la fenetre dans la partie des touches enfoncé mais tant que la procédure n'ets pas fini il ne prend rien en compte.

Comment faire pour arrêter le traitement de cette procédure à n'importe quel moment?


Bonjour,

je crée une variable bStopDemandé dans l'init de ma fenetre,
un bouton stop en interruption avec la touche echap comme touche d'appel
et comme code dans clic : bStopDemandé = vrai
dans ma fonction en fin de boucle je mets un multitache(-1) et si
bStopDemandé alors sortir

Comme le multitache(-1) ralentit un peu le traitement tu peux ne le
demander que si un certain nombre de boucles ont déjà été faites genre :
si PartieEntiere(nCompteur/100) = 0 alors multitache(-1)....

bon dev
Posté le 30 janvier 2006 - 15:01
salut

nous, nous avons fait la chose suivante :

bAbandon est un booleen (global à la fenêtre)

Evénement("TOUCHE_ESC","*.*",256)
Evénement("TOUCHE_ESC","*.*",260)

bAbandon=Faux
boucle
...
multitache(-1)
si bAbandon alors sortir
Fin



Procedure TOUCHE_ESC
SI _EVE.lparame537 ALORS bAbandon=Vrai
Posté le 30 janvier 2006 - 15:45
merci je vais essayer tout ca, j'avais commencé à jouer avec un booleen ... merci pour ces astuces ;)
Posté le 30 janvier 2006 - 17:18
Je viens d'essayer les deux méthodes, malheureusement j'ai l'impression que lorsque ma procédure fait ses boucles, elle ne laisse pas la main pour que la touche appelle la procédure ou le bouton. sinon ca fonctionne mais pas quand ma procédure est lancé.