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

C++Builder Discussion :

fermer une application avec la croix


Sujet :

C++Builder

  1. #1
    Membre chevronné Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Par défaut fermer une application avec la croix
    salut

    Dans une application , je souhaite la fermer en utilisant la petite croix en heut a droite , cela fonctionne sur la premiere Form mais pas sur les autres , pk et comment y remedier ?

    merci d avance de vos reponses

  2. #2
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    La petite croix en haut à droite, utilise l'evenement OnCLose de sa form.

    Si tu est toujours dans le meme projet que precedement, je te dirai que pour quitter ton application ( vu que ta Form1 est ta form principal) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void __fastcall TfrmPrincipal::FormClose(TObject *Sender,
          TCloseAction &Action)
    {
      Form1->Close() ;
    }
    lanonyme

  3. #3
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    Dans les autres tu mets sur l'événement OnClose
    ex pour Form2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
    {
        Application->Terminate();
    }
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  4. #4
    Membre chevronné Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Par défaut
    Quel est la difference entre et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application ->Terminate();
    ??

  5. #5
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Citation Envoyé par nemo69500
    Quel est la difference entre et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application ->Terminate();
    ??
    Si vous êtes dans une méthode de la classe principale Form1, il est inutile de préfixer l'instruction par Form1->, on écrit simplement Close().

    Sinon, il semble qu'Application ->Terminate() soit quelque chose de plus violent que le normal Close(). On peut utiliser la première syntaxe n'importe où dans le code, en pleine boucle, par exemple, si une erreur est survenue. Alors que Close() est une fin normale d'exécution.

    Je ne relate ici que mon expérience propre, si quelque autre expert pouvait confirmer, voire ajouter un détail, ce serait bien.

    À bientôt
    Gilles

  6. #6
    Membre chevronné
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Par défaut
    L'appel de Application->Terminate() ne provoque pas l'appel de l'évènement OnClose. J'ai constaté qu'avec Application->Terminate(), ça ne provoque pas d'erreur si des fenêtres modales sont ouvertes, contrairement à FormClose().

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 74
    Par défaut
    Et la fonction abort(); ? Elle fait quoi de plus que le Terminate();
    merci

  8. #8
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    Bonjour,

    Citation Envoyé par cstan
    Et la fonction abort(); ? Elle fait quoi de plus que le Terminate();
    merci
    Abort();
    Citation Envoyé par Aide de Borland
    Si vous appelez abort n'importe où dans un programme, aucun destructeur n'est appelé, pas même pour les variables globales.
    Terminate();
    Citation Envoyé par Aide de Borland
    Appelez Terminate pour terminer par programme l'exécution d'une application. En appelant Terminate au lieu de libérer l'objet application, vous permettez à l'application de s'arrêter d'une manière plus ordonnée.
    A toi de conclure

    lanonyme

  9. #9
    Membre chevronné Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Par défaut
    Ca me parait evident

  10. #10
    Membre éclairé
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Par défaut EAccessViolation
    Voilà, finalement, Terminate() n'est pas assez violent, alors j'utilise Abort() qui au final me créé quand même une série d'exception. Plus exactement, si je sors dans la première fiche créer par Abort() alors je n'ai pas de problème, l'application se termine sans faire d'histoire, c'est super. Par contre si c'est la deuxième, je ne sais pas pourquoi mais une exception est levée (EAccessViolation, un truc comme ça parceque j'ai lu à une adresse interdite $40) et cette exception se déclenche plusieurs fois.

    Imaginons que la deuxième forme créer s'appelle form2, j'ai essayé de faire dans la première forme créer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (bigError == true)
    {
      form2->Close(); // j'ai essayé avec un form2->Release() aussi.
      Abort();
    Mais j'ai quand même une erreur, pourtant théoriquement cette forme est détruite.

    PS: je ne comprends pas lorsque la ligne Terminate() est lue, le programme continue a créer les formes qui ne l'ont pas encore été.

  11. #11
    Membre éclairé
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Par défaut
    Scusez je me suis trompez de discussion. Il s'agit d'un lien se trouvant dans mon post jusqu'ici...

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

Discussions similaires

  1. Fermer une application avec Java
    Par Badshade23 dans le forum Général Java
    Réponses: 3
    Dernier message: 28/01/2015, 10h59
  2. Fermer une application Web avec un bouton
    Par luilui dans le forum Flex
    Réponses: 5
    Dernier message: 14/10/2009, 16h12
  3. Réponses: 9
    Dernier message: 17/11/2008, 17h18
  4. Fermer une application avec ShellExecute
    Par astano dans le forum Langage
    Réponses: 4
    Dernier message: 20/02/2006, 20h07
  5. [VB6]Fermer une application avec VB
    Par Mylou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/04/2003, 21h32

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