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 confirmé 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
    Points : 519
    Points
    519
    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 actif
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    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 éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 8 254
    Points
    8 254
    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();
    }

  4. #4
    Membre confirmé 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
    Points : 519
    Points
    519
    Par défaut
    Quel est la difference entre et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application ->Terminate();
    ??

  5. #5
    Membre chevronné
    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
    Points : 1 911
    Points
    1 911
    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 averti
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Points : 360
    Points
    360
    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 du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Points : 290
    Points
    290
    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 confirmé 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
    Points : 519
    Points
    519
    Par défaut
    Ca me parait evident

  10. #10
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Points : 152
    Points
    152
    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 habitué
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Points : 152
    Points
    152
    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