Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 25-11-2008 10:25:14

cyraile  
Membre Geek
Date d'inscription: 19-09-2008
Messages: 31
Pépites: 191
Banque: 0

[RESOLU] Annuler un Retrieve

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

 

#2 25-11-2008 10:36:28

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4659
Pépites: 945
Banque: 2,147,483,647
Site web

Re: [RESOLU] Annuler un Retrieve

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+


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#3 25-11-2008 11:02:21

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Annuler un Retrieve

sur l'évènement key de la fenetre tu fais
//donc si l'utilisateur fais "echap" mais cela peut être une autre touche.

Code: pb

IF key = KeyEscape! THEN 
  ib_cancel = TRUE
END IF


Et sur l'évènement retrieverow tu peux faire

Code: pb

IF ib_cancel THEN 
  This.DBCancel()
END IF


Et cela arrête le retrieve.

Hors ligne

 

#4 25-11-2008 14:15:01

cyraile  
Membre Geek
Date d'inscription: 19-09-2008
Messages: 31
Pépites: 191
Banque: 0

Re: [RESOLU] Annuler un Retrieve

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

 

#5 25-11-2008 15:24:07

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Annuler un Retrieve

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 :

Code: PB

w_win1.ib_cancel = TRUE
CLOSE(PARENT)

Hors ligne

 

#6 27-11-2008 16:31:13

cyraile  
Membre Geek
Date d'inscription: 19-09-2008
Messages: 31
Pépites: 191
Banque: 0

Re: [RESOLU] Annuler un Retrieve

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

 

Pied de page des forums

Propulsé par FluxBB 1.2.22