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 :

enregistrer dans un fichier avec une appli mdi


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 4
    Points : 3
    Points
    3
    Par défaut enregistrer dans un fichier avec une appli mdi
    bonjour,

    j'ai une appli mdi
    sur la fenetre principale j'ai un menu avec des options grises
    sur une des fenetres enfants je saisie des valeurs. Une fois les valeurs saisie, je souhaiterais les enregistrers dans un fichiers.

    pour cela je met actif le lien dans le menu mais c apres que je bloques
    ->l'item (qui se trouve dans dialog) je le met sur quel fenetre? la principale ou la fenetre enfant?
    ->Apres lorsque je double clique sur le menu pour y affecter les commande d'ecriture ca se situe dans le cpp de la fenetre principale qui ne connaitra pas les donnees donc problemes.
    ->Enfin l'utilisateur devra pouvoir enregistrer dans un nouveau fichier. Donc si l'utilisateur met un nom de fichier dans la fenetre enregistrer qui va s'ouvrir est ce que ca va creer le fichier?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    Je crois que l'intérêt d'une appli MDI,
    c'est de mettre en facteur des actions possobles sur les fenêtres enfants au niveau de la fiche principale.
    Mais vous avez raison, le pb, c'est de savoir sur quelle fenêtre on veut travailler.

    Pour ça, on peut stocker les pointeurs vers les fenêtres enfants

    Dans le private de la fiche principale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<TMDIChild*> TabEnfants;
    Ne pas oublier dans Main.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <vector>
    using namespace std;
    Lors de la création d'une fenêtre enfant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void __fastcall TMainForm::CreateMDIChild(const String Name)
    {
           TMDIChild *Child;
            Child = new TMDIChild(Application, Num);
            Child->Caption = Name;
            if (FileExists (Name))
                Child->Memo1->Lines->LoadFromFile(Name);
    }
    Le constructeur de TMDIChild est surchargé
    de façon à numéroter les fenêtres enfants.

    Il me semble que le plus simple est que
    est de déclarer l'entier Num en global.

    Il faut encore que lorsqu'une fenêtre enfant est active, on puisse savoir depuis la fiche princiaple,
    quelle fenêtre enfant est active.
    On a besoin d'un nouvel entier global FenetreSel
    qu'il faut mettre à jour lors e l'activation d'une fenêtre enfant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TMDIChild::FormActivate(TObject *Sender)
    {
       FenetreSel = Numero;
    // Numero est un attribut de TMDIChild (déclaré par l'utilisateur)  qui a été rajouté pour pouvoir les numéroter
    }
    Enfin, lors de l'enregistrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void __fastcall TMainForm::BitBtn1Click(TObject *Sender)
    {
         if(OpenDialog->Execute())
       {
          AnsiString str = OpenDialog->FileName;
          TabEnfants[FenetreSel]->Memo1->Lines->SaveToFile(str);
       }
    }
    Moi j'ai une petite question,
    comment vous faîtes pour activer enregisrer sous du menu ?

    Bon dev

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    merci de la reponse meme si j'ai pas tout compris (desole masi je suis debutant). Je vais essaye votre emthode et si j'ai des questions ben je reviendrais la poser.

    pour activer enregistrer sous lorsque la fenetre adequate s'ouvre je tape
    nomdelafentreprincipale->Enregistrer1->Enable=true;

    Enregistrer1 represente le nom dans le menu

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    oups,
    j'ai oublié quelquechose pour le stockage du pointeur de TMDIChild
    lors de la création de fenêtre enfant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TMainForm::CreateMDIChild(const String Name) 
    { 
           TMDIChild *Child; 
            Child = new TMDIChild(Application, Num); 
            Child->Caption = Name; 
            if (FileExists (Name)) 
                Child->Memo1->Lines->LoadFromFile(Name); 
     
            TabEnfants.push_back(Child);   // !!!!!
     
    }

    petite précision comme vous êtes débutant,
    vector est conteneur.
    Il y a de l'aide en ligne sur les conteneurs dans les environnements de prog. C'est très très utile, car c'est un modèle de classe qui permet de faire des tableaux de n'importe quel objet.

    Voici les fonctions les plus utiles pour commencer avec les vecteurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    vector<int> TabEntier;
    et hop voici un tableau d'entier.
    TabEntier.clear(); // vider;
    TabEntier.push_back(2); // ajout d'un élément en fin de tableau.
    int i = TabEntier[0];  // opérateur crochet pour accès à un élément.
    int taille = TabEntier.size(); // nombre d'éléments du tableau

    bonne continuation

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    merci bcp pour ces precisions

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/01/2015, 12h12
  2. Ecrire dans un fichier avec une fonction itérative.
    Par katcha95 dans le forum Débuter
    Réponses: 6
    Dernier message: 22/11/2009, 19h40
  3. enregistrement dans un fichier d'une string XSL-FO
    Par titouille dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 05/10/2009, 17h58
  4. Ecriture dans un fichier avec une applet Java
    Par foued_scorpion dans le forum Applets
    Réponses: 1
    Dernier message: 25/10/2006, 12h30
  5. Ouvrir un fichier avec une appli déjà lancée
    Par Cameleon45 dans le forum Langage
    Réponses: 5
    Dernier message: 04/01/2006, 18h42

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