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 :

Comment assigner le contenu d'un "Edit" à un onglet d'un "TabControl" ?


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut Comment assigner le contenu d'un "Edit" à un onglet d'un "TabControl" ?
    Bonjour,

    sur ma Form, j'ai un composant TabControl et à coté de celui-ci j'ai un composant Edit.
    Je souhaiterai que le contenu du Edit change en fonction de l'onglet que j'ai sélectionné.

    Comment dois je m'y prendre ?
    Je n'arrive pas à trouver la propriété ou la méthode à utiliser pour faire ceci !!!
    Y aurait il quelqu'un pour m'aider ?

    Merci d'avance et à bientôt !

  2. #2
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Salut,
    il me semble qu'il faut que tu sauvegarde, dans un tableau ou un vecteur par exemple, la valeur du Edit pour chaque onglet.
    Ensuite, tu as un évènement OnChange qui se produit à chaque fois que tu change d'onglet, dans cette évènement, il suffit de sauvegarder la valeur de l'onglet courant, pour de lui attribuer la valeur du nouvel onglet sélectionné

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    Salut Pottiez , t es du coin aussi

    Sinon effectivement le onChange , le onEnter ( pour initialiser ) et la valeur TabIndex

    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
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
     TabControl1->Tabs->Add("premier");
     TabControl1->Tabs->Add("deuxieme");
     TabControl1->Tabs->Add("troisieme");
     Memo1->Clear();
     Edit1->Clear();
     }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::TabControl1Change(TObject *Sender)
    {
    if (TabControl1->TabIndex==0){Memo1->Text="Premier";Edit1->Text="Premier";} ;
    if (TabControl1->TabIndex==1){Memo1->Text="Deuxieme";Edit1->Text="Deuxieme";} ;
    if (TabControl1->TabIndex==2){Memo1->Text="Troisieme";Edit1->Text="Troisieme";} ;
     
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::TabControl1Enter(TObject *Sender)
    {
       Memo1->Text="Premier";
    }
    //---------------------------------------------------------------------------

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Merci !

    Mais quand est il si l'utilisateur écrit du texte dans l'edit à l'onglet 1, écrit un texte différent dans l'edit à l'onglet 2, et revient à l'onglet 1 pour retrouver le texte qu'il avait écrit ?

    J'arrive bien à avoir un texte différent dans l'edit quand je change d'onglet mais quand je reviens sur l'onglet précédent, ça ne garde pas en mémoire ce que j'avais écrit !!!

  5. #5
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    D'ou le fait de mettre dans un tableau, par exemple tu as 3 onglets, tu fait un tableau de dimension 3 et tu enregistre la valeur lorsque c'est l'onglet 0 à l'index 0 du tableau, lorsque c'est l'onglet tu enregistre à l'index 1, ....
    Comme ca tu as tes valeurs pour tout les onglets.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    OK, ca fonctionne pour le moment !

    j'ai fait comme ceci :

    - dans mon .h, j'ai déclaré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AnsiString Tableau[10];
    - dans le OnChange du TabControl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void __fastcall TForm1::TabControl1Change(TObject *Sender)
    {
     
    		Edit2->Text = Tableau[TabControl1->TabIndex];
     
    }
    - dans le OnChange de l'edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void __fastcall TForm1::Edit2Change(TObject *Sender)
    {
     
    	Tableau[TabControl1->TabIndex] = Edit2->Text;
     
    }
    Par contre, si j'ai plusieurs Edit dans mes onglets, il va falloir plusieurs Tableau aussi ?

  7. #7
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Oui plusieur tableau ou un tableau d'une structure regroupant toutes les variables (une par composant)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Tu veux dire un tableau avec plusieurs lignes ???

  9. #9
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Bin je veut dire un structure, comme on les utilise en C ou en C++, le mieux est encore une classe

    Dans un .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class saveTabSheet{
    public :
      AnsiString edit1;
      AnsiString edit2;
    ...
    };
    pour la déclaration de ton tableau au lieu de AnsiString tu met ta structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saveTabSheet Tableau[10];
    Dans le OnChange de l'onglet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void __fastcall TForm1::TabControl1Change(TObject *Sender)
    {
     
            Edit2->Text = Tableau[TabControl1->TabIndex].edit2;
     
    }
    Dans le OnChange de l'edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void __fastcall TForm1::Edit2Change(TObject *Sender)
    {
     
        Tableau[TabControl1->TabIndex].edit2 = Edit2->Text;
     
    }

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    C'est ok, merci Pottiez !

    Par contre, je n'arrive pas à faire la même chose avec un composant ComboBox ?

  11. #11
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Pour un TComboBox tu doit sauvegarder plusieurs chose, la propriété Items et la propriété Text

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Ce que j'ai fait ne compile pas !

    - Déclaration dans le .h de ma structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class saveTabSheet{
    public :
      AnsiString edit2;
      AnsiString edit3;
      AnsiString Combo1;
      AnsiString Combo2;
     
    };
    - dans le OnChange du TabControl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void __fastcall TForm1::TabControl1Change(TObject *Sender)
    {
     
    		Edit2->Text = Tableau[TabControl1->TabIndex].edit2 ;
    		Edit3->Text = Tableau[TabControl1->TabIndex].edit3 ;
    		ComboBox1->Text = Tableau[TabControl1->TabIndex].Combo1;
    		ComboBox1->Items = Tableau[TabControl1->TabIndex].Combo2;
    }
    - dans le OnChange du ComboBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void __fastcall TForm1::ComboBox1Change(TObject *Sender)
    {
     
    	Tableau[TabControl1->TabIndex].Combo1 = ComboBox1->Text;
    	Tableau[TabControl1->TabIndex].Combo2 = ComboBox1->Items;
     
    }

  13. #13
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Oui parce que ton Combo2 ne doit pas être de type AnsiString mais de type TStrings

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Erreur de compilation !

    j'ai déclaré comme ceci :

  15. #15
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Excuse moi, c'est un TStrings *, ce que tu aurais pus voir en consultant l'aide

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Oui, j'ai essayé aussi, l'application s'exécute mais quand je fais un changement d'onglet, l'application affiche un message d'erreur venant du déboguer "Impossible d'affecter nil à TComboBoxStrings" !!!

  17. #17
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Alors il ne faut pas le faire tout a fais comme cela pour cette variable

    Dans le constructeur, tu doit faire un new pour chaque index du tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(int i=0;i<10;i++)
      Tableau[i].Combo2 = new TStrings;
    Dans le OnChange de l'onglet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ComboBox1->Clear();
    for(int i=0;i<Tableau[TabControl1->TabIndex].Combo2.Count;i++)
    {
      ComboBox1->Items->Add(Tableau[TabControl1->TabIndex].Combo2->String[i]);
    }
    Dans le OnChange du ComboBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Tableau[TabControl1->TabIndex].Combo2->Clear();
    for(int i=0;i<ComboBox1->Count;i++)
    {
      Tableau[TabControl1->TabIndex].Combo2->Add(ComboBox1->Items->String[i]);
    }

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Dans le constructeur, tu doit faire un new pour chaque index du tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(int i=0;i<10;i++)
      Tableau[i].Combo2 = new TStrings;
    Tu parles du constructeur de ma Form ?

  19. #19
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    oui

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Points : 100
    Points
    100
    Par défaut
    Et bien j'ai un petit paquet d'erreur, la première :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [BCC32 Erreur] UPageControl.cpp(19): E2352 Impossible de créer une instance de la classe abstraite 'TStrings'

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/05/2010, 03h36
  2. comment affecter le contenu d'un Edit vers DBGrid
    Par nn2009 dans le forum Débuter
    Réponses: 7
    Dernier message: 06/01/2010, 11h33
  3. Réponses: 6
    Dernier message: 06/05/2009, 17h45
  4. Comment copier le contenu d'un Edit dans un autre Edit ?
    Par petitclem dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/04/2009, 16h12
  5. [VB.Net]Comment assigner contenu variable> nom variable ?
    Par jazz matazz dans le forum VB.NET
    Réponses: 4
    Dernier message: 03/02/2006, 17h28

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