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 :

[MDI] Ouvrir immédiatement une fenetre fille


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2002
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 14
    Points : 16
    Points
    16
    Par défaut [Resolu][MDI] Ouvrir immédiatement une fenetre fille
    Bjr,

    Dans le cadre d'une application MDI, je cherche a ouvrir immediatement
    apres l'ouverture de la fenetre mere une fenetre Fille.

    J'ai tente de le faire dans plusieurs evenements de la fenetre mere
    (OnShow, OnCreate etc...)

    La j'ai une erreur qui me dit que je n'ai pas de fenetre mere...

    Je pense que cette erreur est du au fait que la fenetre mere n'est pas
    encore "completement prete" au moment ou je tente t'instancier
    la fenetre fille...

    j'ai une methode qui fonctionne mais pas tres elegente (avec un Timer )

    Alors si quelqu'un a une idee (plus elegante) pour le faire je suis preneur

    Merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2002
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    C'est un peu du bricolage aussi mais tu peux mettre ton Form2->Show(); dans l'évenement OnActivate. Le problème c'est que Form2 s'affiche à chaque fois que tu réactive ta Form1... alors tu fais un flag AfficherForm2 que tu met à true dans l'évenement OnShow et que tu remet à false quand tu as executer OnActivate.
    Mais c'est aussi du bricolage... si qq'un trouve mieux...
    a+
    Yannick

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Salut,

    Dans le source de ton projet, peut-être pourrais tu inverser l'ordre de création des différentes fenêtres ... Ca permettrai peut-être de vérifier si c'est vraiment un problème de création de fenêtre impossible pendant la création de fenêtre mère ou non ...

    @+
    Nico-21.

  4. #4
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Il est vrai que je n'ai que la version BCB3 mais les MDIChild
    préconstruites sont affichées après l'apparition de la MDIForm.
    Donc il ne devrait pas y avoir de problèmes d'autant qu'une MDIChild
    ne peut être invisible... Pour la faire disparaitre il faudrait modifier
    FormStyle = fsNormal puis Visible = false ...donc...

    N'aurais-tu pas pris quelques libertés innovantes à ce niveau là ?
    La fiche principale est-elle bien une MDIForm (fsMDIForm) ?

    Je le répète, je n'ai que la version BCB3 donc... il y a peut-être des
    changements à ce niveau là dans les versions ultérieures !

    A plus !

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2002
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    quelques precisions s'imposent

    mon application (MDI) suivant un parametre de la ligne de commande
    ouvre ou pas automatiquement une fenetre fille.

    Il est donc impossible de tjrs creer cette fenetre fille car
    une fenetre MDI fille ne peut pas etre masquee (Visible = false interdit)

    cette fenetre est donc creee par un new ... (dons pas de pb d'ordre de creation)

    j'avais deja tente de bricoler un truc dans le OnActivate (variable static) mais ca ne marche pas non plus

    alors d'autres suggestions ?

    Merci d'avance.

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    ben du coup a part bidouiller comme tu l'as déjà fait avec un Timer reglé sur 10 ms par exemple, je ne connais pas d'autre solution

    @+
    Nico-21.

  7. #7
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    N'y a t-il pas une contradiction quand même :
    - on ouvre avec OU sans fenêtre fille selon que...
    - mais il faut qu'il y ait une fenêtre fille (comme par défaut ?)

    Donc cas de figure génant où l'on se trouve avec deux fenêtres filles !

    Je n'ai jamais utilisé cette technique (ligne de commande... si quelqu'un
    pouvait m'expliquer avec des mots simples... même si ça fait 10 pages).
    Je ne sais même pas à quoi ça correspond ni comment exploiter, mais
    supposons une fiche fille par défaut qui prend un sens précis grâce au contenu
    de cette ligne de commande !

    Ca ne serait pas mieux ?

    A plus et j'attends vos éclaircissements avec une grande impatience.

  8. #8
    Membre habitué
    Inscrit en
    Mars 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 105
    Points : 133
    Points
    133
    Par défaut
    Bonjour,

    J'ai eu le même problème que toi (ouverture de fenêtre fille au lancement de l'application). Effectivement, si tu essaies d'ouvrir ces fenêtres fille dans le constructeur de la fenêtre parent, cela provoque une erreur car la fenêtre parent n'existe pas encore.

    La solution que j'ai adoptée est d'ecrire une méthode "AfterCreate" dans laquelle sont effectuées toutes les actions nécessaires APRES la création de la fenêtre parent (et notamment l'ouverture des fenêtres fille).

    Cette méthode doit ensuite être appelée dans le programme principal WinMain entre la création de la fiche principale et le lancement de la boucle des messages :
    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
     
    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
       try
       {
       Application->Initialize();
       Application->CreateForm( __classid(TMyForm), &MyForm);
     
       MyForm->AfterCreate();
     
       Application->Run();
       }
       catch (Exception &exception)
         {
         Application->ShowException( &exception);
         }
     
    return 0;
    }

    Voila, en espérant que cela puisse répondre à ton problème...
    Nicolas

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2002
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Merci Nicolas

    Ca marche.... mais ce qui m'etonne c que j'ai eu la meme idee
    que toi hier soir quasiment au meme moment ou tu as poste ton message.
    C simplement apres teste mon idee ce matin et en voulant partager le resultat avec le forum que je me suis apercu de ton post.....

    Etonnant non ?

    a croire que la theorie des "Champs de formes" est vrai !!!!

    Enfin bref, merci tout de meme.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/04/2010, 02h14
  2. Réponses: 5
    Dernier message: 13/03/2009, 00h14
  3. MDI - passer un parametre à une fenetre fille
    Par amine245 dans le forum MFC
    Réponses: 8
    Dernier message: 05/04/2006, 16h23
  4. [MDI] Comment charger une Form fille au démarrage ?
    Par Benjamin GAGNEUX dans le forum Composants VCL
    Réponses: 13
    Dernier message: 03/07/2004, 12h40
  5. [MFC] Maximiser à l'ouverture une fenetre fille !
    Par leskritiques dans le forum MFC
    Réponses: 15
    Dernier message: 28/04/2004, 08h50

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