IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Fermeture fenetre modale et ouverture d'une autre fenetre modale


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Points : 67
    Points
    67
    Par défaut Fermeture fenetre modale et ouverture d'une autre fenetre modale
    Bonjour à tous !

    J'ai un petit soucis avec les fenêtres modales :/

    J'ai un formulaire principal (Form1) qui lance une tache et qui affiche un formulaire d'attente en modal. Dès que la tache se termine, elle ferme le formulaire d'attente et ouvre un troisième formulaire en modal. Mais le problème c'est que le formulaire d'attente(modal) ne se ferme pas, il reste affichée derrière tant que le troisième formulaire(modal) n'est pas fermé :/

    Quelqu'un aurait une solution ?

    Merci d'avance.

    Cdlt.

    nirG95

  2. #2
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Salut,

    [...] qui lance une tache [...]
    Hé bien suffit de détecter le contraire = la fin de cette tache qui donnera ordre de fermer ta fiche d'attente.

    Enfin si j'ai bien saisi...

    Je trouve que le mot "formulaire" n'est pas adapté...

    @+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Points : 67
    Points
    67
    Par défaut
    Salut, merci d'avoir répondu si vite.

    Biensur que la fermeture se fait a la fin de mon instruction.

    Form1 affiche le Form2.showmodal(form d'attente) et lance un thread pour télécharger des données. Dès que le thread fini, je lui demande de fermer le Form2.close et d'ouvrir le Form3.showmodal(Form de résultat).

    Mais le Form2 reste affiché derrière le Form3. Mais dès que je ferme le Form3, le Form2 se ferme. Si je passe le Form3 en Show normal, Le Form2 se ferme correctement. Le problème viens que le Form3 est un modal et ne laisse pas le temps et l'autorisation au Form2 de se fermer.

    Aurait-il une solution afin de laisser le Form2 de se fermer correctement avant que le Form3 s'ouvre aussi en modal ?

    Merci d'avance

    Cdlt

  4. #4
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonjour, si form2 est affiché avec ShowModal faut la fermer avec ModalResult := mrOk; et pas Close

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    Bonjour, si form2 est affiché avec ShowModal faut la fermer avec ModalResult := mrOk; et pas Close
    Merci Ouiouioui,

    Mais j'ai remplacé le Form3.close; par Form3.ModalResult := mrOk; et c'est toujours pareil.

    J'avais déjà essayé avec le ModalResult := 1;

    Je ne vois pas de solution :'(

    Je suis à l'écoute de vos prochaine propositions.

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 757
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 757
    Points : 13 353
    Points
    13 353
    Par défaut
    Ca manque de code .

    Mais comme j'ai compris, Form1 lance Form2 qui lance Form3 (peut importe le thread). Form2 ne peut donc pas se fermer tant que Form3 ne l'est pas (Form3.ShowModal met Form2 en attente).

    Form2 et Form3 devraient être gérés depuis Form1 .

    1. Form1 crée Form2
    2. Form2 lance le thread et Attend (TThread.OnTerminate)
    3. Form2.ModalResult := mrOk (ou mrCancel en fonction du résultat du thread)
    4. Si mrOk Form1 crée Form3.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Points : 67
    Points
    67
    Par défaut
    Ok je met la partie conserné de mon code. Cependant je n'ai pas trop suivis ton raisonement :S

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    constructor ThreadFlux.Create(aURL :string);
    begin
      inherited Create(FALSE);
      FURL := aURL;
      FreeOnTerminate := TRUE;
    end;
     
    procedure ThreadFlux.Execute;
    begin
      with TIdHttp.Create(nil) do
      try
        try
          HandleRedirects := TRUE;
          FData := Get(FURL);
        except
          MessageDlg('Problème avec la connexion au serveur.', mtError,[mbOk],0)
        end
      finally
        Free;
      end;
    end;
     
    procedure TForm1.Button6Click(Sender: TObject);
    begin
      if nom.Text <> '' then
        begin
          if MessageDlg('Voulez-vous récupérer les informations ?', mtConfirmation,[mbNo,mbYes],0)=mrYes then
            begin
                with ThreadFlux.Create('http://monsite.com')) do
                onterminate := downloadcomplete;
                Form3.ShowModal;
          end;
      end
      else showmessage('Veuillez remplir le champ Nom : !');
    end;
     
    procedure TForm1.DownloadComplete(Sender: TObject);
    begin
      tmp1 := caract(ThreadFlux(Sender).Data);
      Recherche(sender)
    end;
     
    procedure TForm1.Recherche(Sender: TObject);
    begin
         if (condition) then
            begin
                 //mon code
     
         form3.close; 
           ou 
         form3.ModalResult := mrOk;
     
         form2.ShowModal;
      end
      else
        begin
          showmessage('Les données demandé n''ont pas pu être trouvés ...');
      end;
    end;
    Merci de vos réponses

    Cdlt.

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 757
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 757
    Points : 13 353
    Points
    13 353
    Par défaut
    Je n'ai pas le temps de tester pour voir ce qui coince, mais pour moi, Form1 devrait lancer Form3.
    Form3 exécute le thread (et non pas Form1) et est elle-même notifiée de la fin du thread avant de renvoyer ModalResult.
    Form1 lance ensuite Form2 en fonction du ModalResult.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Points : 67
    Points
    67
    Par défaut
    Ok, je testerai plutard de faire ça car je suis en australie et il est bientot l'heure d'aller faire dodo !! ^^

    Encore merci d'avoir pris du temps pour m'aider.

    Cdlt.

    Ps : Je close le sujet car je ne pourrai pas revenir avant 2 grosses semaines.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouverture fenetre lors du chargement d'une autre fenetre
    Par paintbox dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 12/02/2011, 11h21
  2. Réponses: 20
    Dernier message: 12/02/2010, 14h35
  3. Réponses: 5
    Dernier message: 13/03/2009, 00h14
  4. Boutons : Ouverture dans une autre fenetre
    Par tompouceuh dans le forum Flash
    Réponses: 1
    Dernier message: 17/08/2007, 08h39
  5. [DW8] Menu déroulant /ouverture d'une autre fenetre
    Par bdptaki dans le forum Dreamweaver
    Réponses: 4
    Dernier message: 12/04/2007, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo