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 :

Creation dynamic de TabSheet


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de saidus
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations forums :
    Inscription : Octobre 2004
    Messages : 166
    Par défaut Creation dynamic de TabSheet
    Bonjour!!!
    Pour Creer un nouveau TabSheet en RunTime j'ecris le code sur le Click d'un TButton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        TTabSheet *t = new TTabSheet(PageControl1);
        t->PageControl = PageControl1;
        .....
    et ca marche a merveille ...
    maintenant le Pblm est de Comment Fermer un TabSheet quelconque et en liberant la memoire allouer pour ...
    j'utilise le code avec :
    mais bien sur ca ne peux pas marcher
    Alors ... pourrai je avoir ce code ...
    Merci d'avance ...

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Par défaut
    Ne faudrait-il pas écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     TTabSheet *t = new TTabSheet(this);
        t->PageControl = PageControl1;

  3. #3
    Membre confirmé Avatar de saidus
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations forums :
    Inscription : Octobre 2004
    Messages : 166
    Par défaut
    Bonjour ...
    Que faut il faire alors ..
    j'ai essayer le Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                     TTabSheet *tb = new TTabSheet(PageControl1/*this*/);
                      tb->PageControl = PageControl1;
    et ca marche, a chaque fois que je clic sur le Btn qui execute le code precedant il ya une nouvelle Tabsheet qui ce Cree..
    Maintenant le Probleme pour moi est de Fermer (Close) une TabSheet quelconque (qu'on veux) comment faut il faire

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour,

    Perso, je pense que tu devrais essayer de spécifier un 'Name' particulier (et unique évidemment) pour chaque TTabSheet crée.
    Ainsi, on pourrait imaginer qqchose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TTabSheet *ts = dynamic_cast < TTabSheet*> (this->FindComponent("Name_du_TTabSheet"));
    Et ainsi, faire ce que tu veux avec l'objet ainsi récupéré ...

    A tester et corriger car je ne suis pas dans l'EDI la ...

    Pour la conception, je suivrais ce que préconise Pasqualini

    Bon courage,
    @+

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut saidus:
    J'ai fait simplement ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    TabSheet1->~TTabSheet();
    }

  6. #6
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Avec un TPageControl, pour ajouter un TTabSheet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TTabSheet *T = new TTabSheet(this);
    T->PageControl = PageControl1;
    PageControl1->ActivePage = T;
    Pour supprimer la page active :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(PageControl1->ActivePage != NULL)
        {
        delete PageControl1->ActivePage;
        if(PageControl1->PageCount == 0) PageControl1->ActivePage = NULL;
        else PageControl1->ActivePage = PageControl1->Pages[PageControl1->PageCount-1];
        }
    Pour suprimer n'importe quelle page :

    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
     
    int Page = 2; // pour l'exemple
    if((Page >= 0) && (Page < PageControl1->PageCount))
        {
        delete PageControl1->Pages[Page];
        //Ici, on va activer la page qui suit celle qui a été supprimée
        if(Page != PageControl1->PageCount)
            {
            PageControl1->ActivePage = PageControl1->Pages[Page];
            }
        else
            {
            //Comme la page était la dernière,
            //on cherche à activer la page qui précéde celle qui a été supprimée
            if(PageControl1->PageCount != 0)
                {
                PageControl1->ActivePage = PageControl1->Pages[Page-1];
                }
            else
                {
                PageControl1->ActivePage = NULL;
                }
            }
        }
    Pour l'ensemble des cas, on peut évidemment mettre en place un protocole d'activation différent.

    A plus !

  7. #7
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Salut,
    j'ajoute juste une précision, un composant ne peut pas se "sucider", c'est a dire que le delete du TTabSheet ne peut pas être situé dans le code de ce TTabSheet ou d'un composant lui appartenant.

Discussions similaires

  1. Creation d'un Manifest Http Dynamic Streaming
    Par dubis dans le forum Langage
    Réponses: 4
    Dernier message: 27/05/2013, 14h14
  2. Cree un Dynamic treeview dans un Tabsheet
    Par kanzarih dans le forum Delphi
    Réponses: 3
    Dernier message: 26/05/2007, 10h27
  3. Creation projet Web dynamic
    Par menuge dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/10/2006, 15h27
  4. Pb de creation et destruction de tabsheet dynamique
    Par Unformatic dans le forum Composants VCL
    Réponses: 4
    Dernier message: 28/04/2006, 14h09
  5. Creation d une clee dans la registry en VC++
    Par rico27fr dans le forum MFC
    Réponses: 4
    Dernier message: 30/05/2002, 12h36

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