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]Comportement d'une Form


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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]Comportement d'une Form
    Bonjour tout le monde,
    J'ai un petit problème. J'ouvre depuis ma Form1, une Form2 via ce bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void __fastcall TForm1::Configurations1Click(TObject *Sender)
    {
            //On ouvre la boite de dialogue.
            Form2->ShowModal();
    }
    la Form2 s'ouvre et le code suivant s'exécute:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
    //---------------------------------------------------------------------------
     
    #include "DAPM_Fom.h"           //La fiche de la fenêtre du main.
    #include "DAPM_Fom_Pref.h";     //La fiche de la fenêtre de préférence.
    //---------------------------------------------------------------------------
     
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm2 *Form2;
    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    //A l'ouverture de la boite de dialogue.
     
    void __fastcall TForm2::FormCreate(TObject *Sender)
    {
            //Renome la fenêtre.
            Form2->Caption = Form1->NomLogiciel + " " + Form1->VersionLogiciel + " le " + Form1->DateRevLogiciel + " - Configurations.";
     
            //Prépatarion des champs d'acceuil.
            EditHost->Clear();
            EditPort->Clear();
            EditIdentifiant->Clear();
     
            EditMdp->Clear();
            EditMdp->PasswordChar = 'X';    //Ici on masquera la saisie du mot de passe par un X.
     
            EditMailEmeteur->Clear();
            EditMailRecepteur->Clear();
     
            //Préparation des boutons.
            BtnOk->Caption = "Ok";
            BtnClose->Caption = "Fermer";
     
            //On chargera les données issu du fichier ini.
            if(Form1->TestFichier(Form1->DestPreferenceIni))
            {
                    //On chargera chaque champs avec ce qui est contenu dans le fichier.
            }
     
    }
    //---------------------------------------------------------------------------
    Seulement voila si je ferme la Form2 avec la croix, lorsque je la réouvre, on ne ré-exécute pas le code...
    Et la ce n'est plus correct car on ne va plus reprendre les données du fichier ini pour le mettre à l'écran.

    Existerait il une possibilité d' exécuté systématiquement ce que j'ai codé ?
    Merci beaucoup pour vos indications.
    Cordialement.

  2. #2
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Ton code ne s'execute qu'a la création de la fiche.
    Quand tu la ferme elle est seulement cachée.
    Tu as donc deux solutions :
    - soit tu mets ton code sur l'évenement OnShow de la fiche.
    - ou bien tu crée ta fiche dynamiquement et tu la détruis quand tu la ferme et tu en crée une nouvelle quand tu la reouvre.

  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
    Je vais paraître peut être stupide... M' enfin bon. C'est ainsi que l'on apprend!
    Peut on me donner les deux exemples de code cité par Lucien63 s'il vous plait
    Car les deux méthodes vont au final m' intéressés pour bon nombre d'applications
    Cordialement.

    Je ré édite mon post pour mettre ce que j'ai modifier et qui a l'air de fonctionné correctement.
    J'ai rien changer sur la Form1 donc je ne posterais pas ce qui en est ici...
    Dans ma Form2 j'ai simplement mis ceci:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
    //---------------------------------------------------------------------------
     
    #include "DAPM_Fom.h"           //La fiche de la fenêtre du main.
    #include "DAPM_Fom_Pref.h";     //La fiche de la fenêtre de préférence.
    //---------------------------------------------------------------------------
     
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm2 *Form2;
    //---------------------------------------------------------------------------
    __fastcall TForm2::TForm2(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    //A la création de la boite de dialogue.
     
    void __fastcall TForm2::FormCreate(TObject *Sender)
    {
            //Renome la fenêtre.
            Form2->Caption = Form1->NomLogiciel + " " + Form1->VersionLogiciel + " le " + Form1->DateRevLogiciel + " - Configurations.";
     
            //Prépatarion des champs d'acceuil.
            EditHost->Clear();
            EditPort->Clear();
            EditIdentifiant->Clear();
     
            EditMdp->Clear();
            EditMdp->PasswordChar = 'X';    //Ici on masquera la saisie du mot de passe par un X.
     
            EditMailEmeteur->Clear();
            EditMailRecepteur->Clear();
     
            //Préparation des boutons.
            BtnOk->Caption = "Ok";
            BtnClose->Caption = "Fermer";
     
            /*//On chargera les données issu du fichier ini.
            if(Form1->TestFichier(Form1->DestPreferenceIni))
            {
                    //On chargera chaque champs avec ce qui est contenu dans le fichier.
            }*/
     
    }
    //---------------------------------------------------------------------------
     
    //A l'ouverture de la boite de dialogue.
     
    void __fastcall TForm2::FormShow(TObject *Sender)
    {
            //On chargera les données issu du fichier ini.
            if(Form1->TestFichier(Form1->DestPreferenceIni))
            {
                    //On chargera chaque champs avec ce qui est contenu dans le fichier.
            }
    }
    //---------------------------------------------------------------------------
    Par contre dans l'onglet événements de la Form2, à OnShow j'ai mis FormShow mais justement je ne voie pas pourquoi on peut aussi sélectionné FormCreate. Est ce que l'on pourrais m' expliqué a qoit sert la seconde méthode? Une dernière chose, n' hésitez pas à me donner de plus amples indications, elles sont souvent utile pour approfondir mon code.

    Cordialement.

  4. #4
    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
    Tu peut sélectionner les deux car les deux méthode ont le même prototype, donc tu peut utilisé n'importe quel fonction ayant le même prototype pour les événement ayant besoin de ce prototype. Borland se fout du nom que tu donne à ta fonction, a partir du moment ou elle est dans le prototype voulu.
    Cela veut dire qu'au lieu de créé une fonction OnShow qui fera la même chose que ton OnCreate, tu peut associé la même fonction au deux evenements, et ton code s'executera alors deux fois, une fois en temps que OnCreate, et une fois en temps que OnShow.

  5. #5
    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
    Tout d'abord, je vous remercie beaucoup pour vos informations qui me permettent d'avancée assez rapidement tout en apprenant les subtilité du C++ sous Borland.

    Pour en revenir au sujet:
    A la limite je pourrais me passé du OnCreate pour resté uniquement sur le OnShow. Ça fonctionne parfaitement avec OnShow.

    En guise de conclusion:
    Je vais donc clore ce post sachant que le problème est donc résolu
    Cordialement.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/02/2012, 12h25
  2. [VB6] [Excel] Feuille dans une form, sans excel installé
    Par ro2v dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 05/05/2010, 12h45
  3. [BCB6]Appel d’une form depuis une form avec showmodal
    Par almisuifre dans le forum C++Builder
    Réponses: 4
    Dernier message: 13/11/2006, 19h14
  4. [VB6] masquer la barre de titre d'une form
    Par tiboleo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/12/2002, 17h54
  5. [VB6][Formulaire]Appliquer un Scrollbar a une Form
    Par Boil dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/11/2002, 03h51

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