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 :

pb fenêtre MDI


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 28
    Points : 24
    Points
    24
    Par défaut pb fenêtre MDI
    j'ai besoin de connaitre le numéro de chaque fenêtre fille.
    je pensais utiliser la variable Tag pour donner un numéro à chaque fenêtre fille.
    le problème est que je n'arrive pas à remplir le Tag de la fenêtre.
    quand j'utilise MDIChildren[], il compile et me trouve une exception

    Avez vous des idées??

    Merci beaucoup.

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Points : 81
    Points
    81
    Par défaut
    C'est quoi MDIChildren, un tableau de form ? Il me semble que tu n'utilises pas la bonne méthode. Montres-nous ton code et on pourra t'aider.

  3. #3
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 137
    Points : 621
    Points
    621
    Par défaut
    c'est quoi comme exception ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 28
    Points : 24
    Points
    24
    Par défaut
    finalement je n'utilise pas MDIChildren[] mais le problème survient quand même.Attention je débute.

    code:
    déclaration globale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TMDIChild *Child;
    appuie sur bouton
    Child = new TMDIChild(Application);
     
    dans l'init de la fenêtre fille:
    Child->Tag=FM->MDIChildCount;
    TIniFile *ini = new TIniFile("try" + IntToStr(Child->Tag) + ".ini");
    exception:Access violation at adress 00402383.Read of address FFFFFFFF.

  5. #5
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 137
    Points : 621
    Points
    621
    Par défaut
    t'as essayé de mettre des points d'arrêt pour localiser exactement l'erreur ???

    théoriquement, tag est utilisé pour passer des données à ton composant. tu devrais plutôt faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int tmp = FM->MDIChildCount;
    AnsiString ch = "try";
    ch += tmp;
    ch += ".ini";
    TIniFile * ini = new TIniFile(ch);

    théoriquement, sous Win32 t'est sensé utiliser la base de registres plutot que les fichiers INI => composant TRegIniFile (même fonctionnement que TIniFile)

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par dédé
    déclaration globale
    TMDIChild *Child;
    appuie sur bouton
    Child = new TMDIChild(Application);
    Ne serait-ce pas Child = new TMDIChild(this) ??

    Citation Envoyé par dédé
    quand j'utilise MDIChildren[], il compile et me trouve une exception
    Peut-être donnes-tu un indice en dehors du tableau de style FM->MDIChildren[FM->MDIChildCount] au lieu de FM->MDIChildren[FM->MDIChildCount - 1].

    Apparemment ton erreur ne vient pas des déclarations contenues dans l'init de ta fenêtre fille, elles ne semblent pas incorrectes.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 28
    Points : 24
    Points
    24
    Par défaut
    j'ai trouvé le problème
    En fait je récupérais le nom de la fenêtre avant de la nommer.
    Création fenêtre fille(fonction menu new)
    récupère nom(init de fenêtre fille)
    donne nom(fonction menu new)

    maintenant:

    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
    void __fastcall TFM::CreateMDIChild(String Name)
    {
    	TMDIChild *Child;
     
    	//--- create a new MDI child window ----
    	Child = new TMDIChild(Application);
    	Child->Caption = Name;
    	if (FileExists (Name))
    		Child->M1->Lines->LoadFromFile(Name);
     
       Child->Tag=MDIChildCount ;
       TIniFile *ini = new TIniFile("try" + IntToStr(MDIChildCount) + ".ini");
       if (FileExists ("try" + IntToStr(MDIChildCount) + ".ini")) {}
       else
          {
          ini->WriteString("INFO", "Board",IntToStr(MDIChildCount));
          ini->WriteString("Bouton 1", "0","");
     
          }
       delete ini;
    }

    je récupère le numéro de la fenêtre fille par FM->MDIChildren[0]->Tag.
    MDIChildren[0] pointe sur la fenêtre active


    Merci à tous

  8. #8
    Invité
    Invité(e)
    Par défaut Gilles Louise
    Pour les applis Mdi, il est bien d'utiliser les conseils de Gilles Louise (de ce site), ça évite de perdre de nombreuses heures à réinventer la poudre...

    C'est ce que j'ai fait et je trouve sa méthode très pratique.

    A+

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

Discussions similaires

  1. TActionMainMenuBar et fenêtres MDI
    Par MD Software dans le forum Composants VCL
    Réponses: 4
    Dernier message: 24/05/2005, 10h09
  2. Taille et position initiale d'une fenêtre MDI fille
    Par nutsDz dans le forum C++Builder
    Réponses: 8
    Dernier message: 09/05/2005, 16h05
  3. Réaffichage fenêtre MDI
    Par charles.apollon dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/03/2005, 17h39
  4. Composant TImage sur fenêtre MDI Parent
    Par charles.apollon dans le forum C++Builder
    Réponses: 6
    Dernier message: 10/02/2005, 15h47
  5. cacher une fenêtre MDI
    Par briscard dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/06/2004, 15h12

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