Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J'ai un retrieve qui est assez long à s'exécuter du faite qu'il va chercher des tables distantes. Et vu le nombre de filtre qu'il est possible d'y ajouter - je voudrais mettre un bouton 'Annuler' au cas ou l'on remarque que l'on s'est trompé dans le filtre au lieu d'attendre 2 minutes qu'il se termine et recommencer la même opération.
Seulement je ne sais pas comment faire cela.
Merci d'avance pour votre aide.
Dernière modification par cyraile (27-11-2008 16:31:27)
Hors ligne
tu fais apparaitre une fenetre d'annulation, avant ton retrieve.
tu geres le bouton 'annuler' via une variable d'instance
et dans l'event retrieverow de ta dw resultat, tu testes le code retour de la variable d'instance
et return 1 si le bouton 'annuler' est enclenché.
A+
Hors ligne
sur l'évènement key de la fenetre tu fais
//donc si l'utilisateur fais "echap" mais cela peut être une autre touche.
IF key = KeyEscape! THEN ib_cancel = TRUE END IF
Et sur l'évènement retrieverow tu peux faire
IF ib_cancel THEN This.DBCancel() END IF
Et cela arrête le retrieve.
Hors ligne
Désolé mais je nage.
- J'ai créée ma fenêtre avec ma datawindow.
- J'en ai crée une seconde que j'ouvre juste avant le Retrieve() avec un texte ("Chargement en cours") et un bouton (que j'ai mis direct sur la fenêtre)
- Après je vois pas le code qu'il faut que je face.
Merci d'avance.
Hors ligne
Bonjour,
Dans ta première fenêtre avec la datawindow, tu crées une variable d'instance Boolean ib_cancel = FALSE.
Tu insères le code telle que décrit par WAZOU812 dans l'événement retrieverow.
Dans l'événement clicked d'un bouton annuler de ta seconde fenêtre d'attente, tu codes :
w_win1.ib_cancel = TRUE CLOSE(PARENT)
Hors ligne
Merci - ca marche nikel.
Juste un petit truc - comme ma procédure met un temps avant de faire le SELECT de retour - la main n'est pas rendu immédiatement.
Hors ligne