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 :

TForm et Close() [FAQ]


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut TForm et Close()
    Salut à tous,

    Quand je crée ma Form principale, je fais un ShowModal () sur une seconde, comme une demande de login. Si jamais le login ne correspond pas je veux fermer la form principale.

    Le truc c'est que la méthode Close() dans le constructeur de la form principale ne passe pas, elle ne fait rien.

    Comment est-ce que je pourrais la fermer, ou alors l'empecher de s'ouvrir ?

    Merci
    ++

  2. #2
    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
    Vous ne pouvez pas invoquer Form2 dans la constructeur de Form1 car Form2 n'existe pas encore au moment de ce constructeur, il est préférable d'utiliser l'événement OnShow de Form1 qui se produit juste avant l'affichage mais tous les composants sont créés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::FormShow(TObject *Sender)
    {
    Form2->ShowModal();
    }
    Dans Form2, il suffira d'écrire Form1->Close(); pour fermer l'application.

    À bientôt
    Gilles

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut
    En fait la Form2 n'est pas créée automatiquement mais c'est moi qui l'a crée dans le constructeur de la form principale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    __fastcall TForm1::TForm1(TComponent* Owner)
      : TForm(Owner)
    {
      TForm2 *Form2 = new TForm2(Form1);
      int a = Form2->ShowModal();
    }
    J'ai essayé de fermer la Form1 par l'attribut Owner de la Form2 mais ca ne marche pas, peut être parce que la Form1 n'est pas encore "totalement" créée (on est ici dans son constructeur).

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Sinon tu peux aussi essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application->Terminate();
    L'application se termine dès que tous les messages auront été traités jusqu'au traitement
    du WM_QUIT, ce qui peut se traduire par un petite inertie, dans le sens ou Form1 pourrait
    apparaître puis disparaître. A tester !

    A plus !

  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
    C'est vrai henderson, Application->Terminate fonctionne dans le constructeur de la forme principale mais pas Close() qui ne fait rien, en revanche Close() fonctionne dans le OnShow ainsi que je l'avais proposé.

    À bientôt
    Gilles

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut
    Toutes mes excuses Gilles j'avais pas vu que vous proposiez dans le OnShow ()

    La ca marche parfaitement.

    Merci beaucoup

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

Discussions similaires

  1. Create : TFrom & Tbutton [Close TForm]
    Par Gregory666 dans le forum Débuter
    Réponses: 3
    Dernier message: 12/08/2013, 10h25
  2. Réponses: 2
    Dernier message: 17/09/2003, 09h36
  3. Taille d'un TForm à l'état Maximized
    Par Altau dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/06/2003, 12h57
  4. [TForm] Ne pas autoriser l'ouverture d'un form
    Par sbeu dans le forum Composants VCL
    Réponses: 6
    Dernier message: 11/10/2002, 11h20
  5. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26

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