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 :

[BCB6] Fermeture d'une TForm


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut [BCB6] Fermeture d'une TForm
    Bonsoir tout le monde,
    J'ai un petit souci. J'aimerais fermé ma Form2 que j'ai ouverte comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //Si on viens à choisir la boite de dialogue par le menu.
     
    void __fastcall TForm1::Configurations1Click(TObject *Sender)
    {
            //On ouvre la boite de dialogue.
            Form2->ShowModal();
    }
    Mais voilà avant de fermé brutalement cette Form2, j'aimerais que cela exécute le code suivant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    //L'utilisateur désire enregistrer et quitter la fenêtre de configuration.
     
    void __fastcall TForm2::BtnOkClick(TObject *Sender)
    {
            //Déclaration des variables utilisées pour enregistrer les données issue de la saisie
            //vers Préférence.ini.
            char ChampHost[50], ChampPort[50], ChampIdentifiant[50], ChampMDP[50], ChampAdresseEmeteur[50], ChampAdresseRecepteur[50];
            char CheminPreferenceIni[100];
     
            //On chargera les données issu du fichier préférence.ini.
            if(Form1->TestFichier(Form1->DestPreferenceIni))
            {
                    //Corvertie toutes les données saisie par l'utilisateur.
                    AnsiToChar(ChampHost, EditHost->Text);
                    AnsiToChar(ChampPort, EditPort->Text);
                    AnsiToChar(ChampIdentifiant, EditIdentifiant->Text);
                    AnsiToChar(ChampMDP, EditMdp->Text);
                    AnsiToChar(ChampAdresseEmeteur, EditMailEmeteur->Text);
                    AnsiToChar(ChampAdresseRecepteur, EditMailRecepteur->Text);
     
                    //Convertie au format char le chemin du fichier ini qui est au format AnsiString.
                    AnsiToChar(CheminPreferenceIni, Form1->DestPreferenceIni);
     
                    //Enregistre les données saisie dans le fichier Préférence.ini.
                    WritePrivateProfileString("Mail", "Host", ChampHost, CheminPreferenceIni);
                    WritePrivateProfileString("Mail", "Port", ChampPort, CheminPreferenceIni);
                    WritePrivateProfileString("Mail", "Identifiant", ChampIdentifiant, CheminPreferenceIni);
                    WritePrivateProfileString("Mail", "MotDePasse", ChampMDP, CheminPreferenceIni);
                    WritePrivateProfileString("Mail", "EmailEnvoie", ChampAdresseEmeteur, CheminPreferenceIni);
                    WritePrivateProfileString("Mail", "EmailDestinataire", ChampAdresseRecepteur, CheminPreferenceIni);
            }
     
            //Ferme la fenêtre de configuration.
     
    }
    Pardonnez moi la longueur du code, mais il me paraît plus évident de faire ainsi et de placer mon code, que de vous faire un long discours. Çà devrais vous permettre de mieux comprendre mon attente en ayant le celui-ci sous les yeux

    J'avoue que je ne voie pas trop quoi faire!
    Avez vous une solution dans ce cas précis ?
    Merci pour vos réponses.
    Cordialement.

  2. #2
    Membre émérite Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Par défaut
    Bonsoir,
    Je pense qu'en utilisant l'événement OnCloseQuery de la forme,cela pourrait résoudre votre problème.

    Vous pouvez modifier le paramètre CanClose de cette méthode afin d'empêcher la fermeture de la forme avant d'avoir effectué les traitements.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Et comment je puis réaliser un tel code?
    Je ne voie pas trop à l'endroit ou j'ai le commentaire "//Ferme la fenêtre de configuration.".
    Si quelqu'un pouvais m'aiguillé sur un exemple ca serais un plus.
    Cordialement.

  4. #4
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    Voila ce qu'il faut que tu fasse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm_test_version::FormCloseQuery(TObject *Sender,
          bool &CanClose)
    {
            ModalResult = 1;
    }
    tu peux aussi le mettre dans n'importe quel autre fonction...
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  5. #5
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Exactement, le mieux serai à la fin de l'événement BtnOkClick

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Il y a une chose que je ne comprend pas...
    Faut il que je mette la methode dans celle du bouton?
    Ou faut il que je face un appel vers celle du FormCloseQuery depuis le bouton?

  7. #7
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Non tu doit mettre a la fin de la fonction BtnOkClick la ligne Comme cela, la form va se fermer dès que tu clique sur le bouton ok

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Et le code précédent s'exécute avant donc.
    en gros ca reviendrais à faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    //L'utilisateur désire enregistrer et quitter la fenêtre de configuration.
     
    void __fastcall TForm2::BtnOkClick(TObject *Sender)
    {
            //Déclaration des variables utilisées pour enregistrer les données issue de la saisie
            //vers Préférence.ini.
            char ChampHost[50], ChampPort[50], ChampIdentifiant[50], ChampMDP[50], ChampAdresseEmeteur[50], ChampAdresseRecepteur[50];
            char CheminPreferenceIni[100];
     
            //On chargera les données issu du fichier préférence.ini.
            if(Form1->TestFichier(Form1->DestPreferenceIni))
            {
                    //Corvertie toutes les données saisie par l'utilisateur.
                    AnsiToChar(ChampHost, EditHost->Text);
                    AnsiToChar(ChampPort, EditPort->Text);
                    AnsiToChar(ChampIdentifiant, EditIdentifiant->Text);
                    AnsiToChar(ChampMDP, EditMdp->Text);
                    AnsiToChar(ChampAdresseEmeteur, EditMailEmeteur->Text);
                    AnsiToChar(ChampAdresseRecepteur, EditMailRecepteur->Text);
     
                    //Convertie au format char le chemin du fichier ini qui est au format AnsiString.
                    AnsiToChar(CheminPreferenceIni, Form1->DestPreferenceIni);
     
                    //Enregistre les données saisie dans le fichier Préférence.ini.
                    WritePrivateProfileString("Mail", "Host", ChampHost, CheminPreferenceIni);
                    WritePrivateProfileString("Mail", "Port", ChampPort, CheminPreferenceIni);
                    WritePrivateProfileString("Mail", "Identifiant", ChampIdentifiant, CheminPreferenceIni);
                    WritePrivateProfileString("Mail", "MotDePasse", ChampMDP, CheminPreferenceIni);
                    WritePrivateProfileString("Mail", "EmailEnvoie", ChampAdresseEmeteur, CheminPreferenceIni);
                    WritePrivateProfileString("Mail", "EmailDestinataire", ChampAdresseRecepteur, CheminPreferenceIni);
            }
     
            //Ferme la fenêtre de configuration.
            ModalResult = mrOk;
    }

  9. #9
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Exactement, les Forms ouvert en ShowModale ne se ferme que lorsque la propriété modalResult est attribué à une valeur différente de mrNone

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Ok!
    Par défaut, j'avais laissé à mrNone pensant qu'il falait faire une destruction de la fenêtre. Mais si effectivement ça fonctionne comme celà. Ca me va très bien!
    Je test celà ce soir.
    Merci encore pour vos indications et précisions.
    Cordialement.


    Je me permet de réediter le post car j'ai relevé une erreur dans le code précédent.
    Il faut en réalisé remplacer ModalResult = mrOk;par Form2->ModalResult = mrOk;
    Effectivement cela fonctionne correctement.
    Encore merci pour ces précieuses indications.
    Cordialement.

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

Discussions similaires

  1. [BCB6] Une TForm 2 centré au dessus d'une TForm2
    Par Draner dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/06/2008, 14h55
  2. [BCB6] Mettre dans une TForm une autre TForm.
    Par almisuifre dans le forum C++Builder
    Réponses: 17
    Dernier message: 25/11/2006, 07h08
  3. Réponses: 1
    Dernier message: 05/07/2006, 08h34
  4. Comment interdire la fermeture d'une fiche empilée ?
    Par psau dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/07/2004, 14h01
  5. [VB6] [MDI] Signaler la fermeture d'une fille à la mère
    Par cpri1shoot dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/04/2004, 08h57

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