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

Langage Delphi Discussion :

Traitements lors de l'arrêt de l'application ?


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Traitements lors de l'arrêt de l'application ?
    Bonjour,

    Voilà lors de l'initialisation de l'application (avant Application.Run en fait) je réalise plusieurs opérations. Jusque là tout va bien. Maintenant ce que je voudrais c'est réaliser d'autres opérations à l'arrêt de l'application.

    Avant toute explication, voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    begin
      if(CreateMutex(nil, False, 'Mtx_xxx')=ERROR_ALREADY_EXISTS) then Exit;
     
      Application.Initialize;
      Application.Title := 'xxx';
     
      if(OuvertureBaseSQLite(ExtractFilePath(Application.ExeName)) = False) then Exit;
     
      Application.CreateForm(TForm_Login, Form_Login);
      Application.Run;
    end.
    Je rentre dans les détails : lors du lancement de l'application j'ouvre une base de données. Il n'y a aucune requête, c'est juste une demande d'ouverture et gestion des erreurs si cela ne marche pas. Si tout se passe bien l'application se lance.
    Maintenant moi ce que je voudrais c'est à la fermeture de l'application faire un appel à une fonction type FermetureBaseSQLite() (entre autre). Mais comment faire ? Mettre ces traitements après le Application.Run() ? Instinctivement c'est une solution qui me paraît loin d'être propre. Détecter la fermeture de l'application ? (Y'a un message qui est envoyé lors d'un Application.Terminate() ? C'est récupérable ?).
    Bref je ne sais pas trop quoi faire. Alors oui certains pourraient me dire "Mais pourquoi tu fais pas tout ca dans la form que tu crées (Form_Login) ?". D'une part parce que je veux que l'ouverture de ma base soit indépendante d'une Form. D'autre part parce que la durée de vie de cette Form est extrêmement courte puisque qu'elle détruite juste après qu'un utilisateur se soit identifié. Donc j'en reviens à mon problème lors de la fermeture de l'application. Ou alors il faut que je mette mes traitements dans toutes les form lors d'un OnClose ? :/

    Bon, je sais pas si j'ai été très clair :o Merci d'avance pour vos réponses en tout cas.

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Le dernier évènement que ton application peut recevoir, c'est dans le onDestroy de ta fiche principale (=lorsque cette fiche se ferme, ton application se termine).
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Je suis encore plus dans le brouillard là Ma fiche principale (la 1ère créée si je me trompe pas) c'est donc ma Form_Login. Tu dis que lorsque cette Form est détruite l'application se termine. Or, juste avant de détruire cette form j'en crée une autre dynamiquent puis je la (Form_Login) détruis. Et bien l'application ne se termine pas. Il y a une sorte de transfert dans ce cas (i.e. la form créée dynamiquement devient la form principale) ?

  4. #4
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Citation Envoyé par Frank38
    Je suis encore plus dans le brouillard là Ma fiche principale (la 1ère créée si je me trompe pas) c'est donc ma Form_Login. Tu dis que lorsque cette Form est détruite l'application se termine. Or, juste avant de détruire cette form j'en crée une autre dynamiquent puis je la (Form_Login) détruis. Et bien l'application ne se termine pas. Il y a une sorte de transfert dans ce cas (i.e. la form créée dynamiquement devient la form principale) ?

    Quand tu fermes la fiche principale, tu fermes l'application.
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Bon, bon, bon. Bah je sais pas comment je me débrouille alors, en tout cas ca marche.

    Pour revenir au sujet, est ce que c'est "propre" de mettre des choses après le Application.Run() ?

  6. #6
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Une solution, utilises la propriété ShowMainForm de TApplication :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    begin
      if(CreateMutex(nil, False, 'Mtx_xxx')=ERROR_ALREADY_EXISTS) then Exit;
      Application.ShowMAinForm:=false;
      Application.Initialize;
      Application.Title := 'xxx';
     
      if(OuvertureBaseSQLite(ExtractFilePath(Application.ExeName)) = False) then Exit;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm_Login, Form_Login);
      Application.Run;
    end.
    n'oublies pas de d'écrire Form1.visible:=true dans le Onclose de TForm_Login
    Bidouilleuse Delphi

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Ah ouè tiens je connaissais pas cette propriété. Je vais jouer aussi avec la propriété MainForm.

    Pour revenir au problème qui m'intéresse avant tout, j'ai mis ma fonction FermetureBaseSQLite() après Application.Run(). Ca marche bien mais c'est un petit peu "goret" non ?

  8. #8
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    La propriété MainForm est en Lecture seule, tu ne pourras donc pas la modifier.

    Bon courage
    Bidouilleuse Delphi

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/01/2007, 16h47
  2. [.NET 2.0] Erreur lors de l'utilisation d'une application .NET
    Par Jérôme Lambert dans le forum Framework .NET
    Réponses: 6
    Dernier message: 21/11/2006, 15h45
  3. Erreur lors de l'installation d'une application
    Par omlip dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 16/11/2006, 12h21
  4. problème lors de l'utilisation de mon application
    Par dododi dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/10/2006, 19h35
  5. [Web-App][Servlet][Axis] Problème lors de l'arrêt de la web-app
    Par c.tranquille dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 02/12/2005, 09h49

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