PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Arrêter une procédure ???
Arrêter une procédure ???
Débuté par guest, 20 fév. 2006 16:40 - 8 réponses
Posté le 20 février 2006 - 16:40
Re bonjour,

J'ai un autre problème important :
J'ai un bouton qui lance une procédure, si on clique sur le bouton plusieurs fois d'affilé je voudrais arrêter le traitement de la procédure s'il est encore en cours avant de le relancer.
Est-ce possible ???

Merci,
Julie
Posté le 20 février 2006 - 17:38
oula, si le traitement est très rapide a s'effectué ca sert a rien

je ne c pas si c possible
Posté le 20 février 2006 - 18:01
Le traitement n'est pas rapide c'est bien là mon problème.
Posté le 21 février 2006 - 09:32
Salut,

tu n'a qu'à exécuter ton traitement dans un thread.
Dans ton bouton qui lance le traitement tu t'assures que le thread n'est pas
en cours et tu le relances

ThreadArrête("th")
ThreadExécute("th",threadNormal,maprocedure)

Mathieu
Posté le 21 février 2006 - 09:37
Bonjour,

Dans un cas similaire ou le traitement lié au bouton est assez long, j'ai
mis en place un système très simple qui consiste en quelques lignes de code
placées au début du traitement :
1. Le bouton prend l'état "grisé" ce qui évite que l'on ne re-clique
dessus par erreur.
2. Je rends visible un libellé clignotant indiquant que le traitement
est en cours et je le fait clignoter avec le code multitâche(1) placé
judicieusement dans mon traitement.
3. A la fin du traitement, ou en cas de problème dans le traitement, je
rends invisible le libellé et je redonne l'état "Actif" au bouton.

Espérant avoir aidé,


--
David Berthemet

"La forme même des pyramides d'Égypte montre que déjà les ouvriers avaient
tendance à en faire de moins en moins." Will Cuppy - Humoriste et
journaliste américain



"Julie P." <guest@newsgroup.fr> a écrit dans le message de news:
43f9c467$1@news.pcsoft.fr...

Re bonjour,

J'ai un autre problème important :
J'ai un bouton qui lance une procédure, si on clique sur le bouton
plusieurs fois d'affilé je voudrais arrêter le traitement de la procédure
s'il est encore en cours avant de le relancer.
Est-ce possible ???

Merci,
Julie
Posté le 21 février 2006 - 09:37
Julie P. a présenté l'énoncé suivant :
Re bonjour,

J'ai un autre problème important :
J'ai un bouton qui lance une procédure, si on clique sur le bouton plusieurs
fois d'affilé je voudrais arrêter le traitement de la procédure s'il est
encore en cours avant de le relancer. Est-ce possible ???

Merci,
Julie


Va voir du coté des threads.


Stéphane Dassy
Posté le 21 février 2006 - 09:43
C'est possible
Faut passer par detection touche (esc par exemple ) et multitache .. voir exemples
Posté le 21 février 2006 - 09:43
A mettre dans procédure lancement TAprocédure

si TESTETOUCHE() alors retour // (ou autre chose action )


===============================================
PROCEDURE TESTETOUCHE() // teste appui touche shift ou escape

Multitâche(20)
SI ToucheEnfoncée(teEchap) OU ToucheEnfoncée(teShift) ALORS
renvoyer vrai

FIN
renvoyer faux
Posté le 21 février 2006 - 09:47
Re bonjour,

J'ai un autre problème important :
J'ai un bouton qui lance une procédure, si on clique sur le bouton plusieurs
fois d'affilé je voudrais arrêter le traitement de la procédure s'il est
encore en cours avant de le relancer. Est-ce possible ???


C'est l'un des cas où j'utilise une globale.

Ex :

gTraite est un booleen=faux
gArret est un booleen=faux

Bouton
{
Si gTraite=vrai
gArret=vrai
Fin
Tantque gArret=vrai
multitache
fin

Envoi de la procédure
}

Procédure
gTraite=vrai

Dans le traitement (si c'est une boucle par exemple)
si gArret
gTraite=faux
gArret=faux
Retour
fin

C'est une possibilité parmi d'autres...