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 :

Forcer un programme à se fermer.


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 59
    Points
    59
    Par défaut Forcer un programme à se fermer.
    Bonjour, je souhaite forcer mon programme à se fermer.

    J'ai fait un bouton qui génère un évènement puisque celui-ci se trouve sur un autre cadre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TFrmMainFrame.Button1Click(Sender: TObject);
    var
      monHandle : THandle;
    begin
      inherited;
      if Assigned(FOnFinProgramme) then
          FOnFinProgramme(Self);
    end;
    J'affecte l'évènement de mon bouton à une procedure qui va quitter le programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Frame_principale.onFinProgramme := finProgramme;
    J'ai écris le code suivant dans la procedure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TFormPp.finProgramme(sender: TObject);
    begin
      if MessageDlg('Le test en cours va être annulé.',mtCustom,mbOkCancel,0) = 1 then
      begin
        termine := True;
        Application.Terminate;
      end;
    end;
    Le booléen termine est mis à True et permet de finir la boucle "repeat... until".

    Après avoir terminé la boucle, j'ai d'autres actions qui s'exécutent. Pour éviter qu'elles ne s'executent, j'ai mis le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if not termine then
    begin
    [...]
    end;
    Le soucis c'est que la boucle est bien quitté, le code suivant n'est pas executé, comme je le souhaite, mais le programme ne se ferme pas.

    J'imagine que le problème vient du fait que le code "application.terminate" ne s'execute pas du fait qu'il reste des actions à finir.

    Je ne sais pas trop comment m'y prendre.

    J'espère avoir été clair. :p

    Merci pour votre aide.

  2. #2
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2002
    Messages : 144
    Points : 157
    Points
    157
    Par défaut
    Bonjour,

    Je pense qu'il y a beaucoup plus simple.

    Tu te crée une variable globale booléenne au projet, par exemple on l'appelle 'fTraitement'.

    Lorsque ton traitement commence, tu mets fTraitement = true et dès qu'il est terminé tu le mets en false.

    Par contre, dans la fiche principale, dans l'evenement OnCloseQuery tu fais quelque chose comme ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TfMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if fTraitement=true then
        CanClose := ('Traitement en cours, voulez-vous l''annuler?',mtConfirmation,[mbYes,mbNo],0)=mrYes
      else
        CanClose := True; 
    end;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    Merci pour ton aide, c'est effectivement beaucoup plus simple

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

Discussions similaires

  1. [Débutant] forcer le programme à retourner à une ligne
    Par tarek008 dans le forum MATLAB
    Réponses: 8
    Dernier message: 25/01/2010, 15h35
  2. forcer un programme vers une zone de mémoire
    Par ilimo dans le forum C++
    Réponses: 3
    Dernier message: 30/03/2008, 21h31
  3. Réponses: 3
    Dernier message: 07/11/2005, 17h33
  4. Fermer un programme exécuté???
    Par abztrak05 dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/07/2005, 00h31
  5. Fermer la fentre sans quitter le programme?
    Par tomburn dans le forum OpenGL
    Réponses: 13
    Dernier message: 06/12/2004, 17h02

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