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

Delphi Discussion :

création dynamique d'onglets dans d'autres onglets


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Points : 78
    Points
    78
    Par défaut création dynamique d'onglets dans d'autres onglets
    Bonjour,
    mon appli crée dynamiquement des onglets (on les appellera niveau I ).Dans chacun des onglets niveau I, je recrée d'autres onglets niveau II. Je rencontre le problème suivant : la création des onglets niveau II se fait mais dès que je clique sur un autre onglet niveau I, et que je reviens sur cet onglet niveau I, tous mes onglets niveau II ont disparu.
    je pense que ce doit être un problème de parent ou un truc dans le genre, voici mon code :
    //création des onglets niveau I
    Pagecontrol_PersoFH:=TPageControl.Create(self);
    Pagecontrol_PersoFH.Parent:=self;
    for i_bond :=1 to 5
    do begin
    //--> création des onglets
    ts_PersoFH[i_bond]:=TTabsheet.Create(self);
    ts_PersoFH[i_bond].Caption:='Bond '+inttostr(i_bond);
    ts_PersoFH[i_bond].PageControl:=Pagecontrol_PersoFH;
    ...
    //création des onglets niveau II
    Pagecontrol_PersoFH2:=TPageControl.Create(self);
    Pagecontrol_PersoFH2.Parent:=Pagecontrol_PersoFH ? ;// self ? ;
    for i_onglet_perso :=1 to 4
    do begin
    //--> création des onglets
    ts_PersoFH2[i_onglet_perso]:=TTabsheet.Create(self);
    ts_PersoFH2[i_onglet_perso].Parent:=Pagecontrol_PersoFH2 ?;// ts_PersoFH[i_onglet_perso]?;
    ts_PersoFH2[i_onglet_perso].PageControl:=Pagecontrol_PersoFH2;
    end;
    merci pour toute aide
    Seb

  2. #2
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    A mon avis,
    il faut que le parent (le conteneur), de ton pagecontrol de 2eme niveau soit un TTabSheet et non ton PageControl de 1er niveau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PageControl2emeniveau.Parent = UnTabSheetDuPageControl1erNiveau

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Points : 78
    Points
    78
    Par défaut
    Citation Envoyé par TicTacToe
    A mon avis,
    il faut que le parent (le conteneur), de ton pagecontrol de 2eme niveau soit un TTabSheet et non ton PageControl de 1er niveau.
    J'ai essayé mais cela provoque une EAccess Violation. je viens de me rendre compte aussi que mon page control de niveau II devra être un tableau de pagecontrol car il en faudra un dans chaque onglet de niveau I.
    et maintenant,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Pagecontrol_PersoFH2[i_onglet_perso]:=TPageControl.Create(self);
    fait aussi planter delphi
    help !

  4. #4
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    J'ai essayé le code suivant, il fonctionne correctement si ca peux t'aider...
    Ensuite, il faut adapter à tes variables, et en nombres d'onglets...

    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
     
    var
       PG1, PG2: TPageControl;
       TTab1, TTab2: TTabSheet;
    begin
         PG1 := TPageControl.Create( Self );
         PG1.Parent := Self;
         TTab1 := TTabSheet.Create( Self );
         TTab1.PageControl := PG1;
         TTab1.Caption := 'TTab1';
         PG2 := TPageControl.Create( Self );
         PG2.Parent := TTab1; // ou bien reprendre un TabSheet de PG1
         TTab2 := TTabSheet.Create( Self );
         TTab2.PageControl := PG2;
         TTab2.Caption := 'TTab2';
    end;
    remarque: l'affecation d'un tabsheet à un page control, affecte automatiquement le parent du tabsheet à son pagecontrol

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Points : 78
    Points
    78
    Par défaut
    merci pour ton coup de main.
    Pour ceux que ça interesse de créer plusieurs onglets dans d'autres onglets :
    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
     
      Pagecontrol_PersoFH:=TPageControl.Create(self);
      Pagecontrol_PersoFH.Parent:=self;
    ...
     
      for i_bond :=1 to strtoint(cbx_nombre_de_liaisons_FH_entre_les_deux_sites.Text)
      do begin
           //--> création des onglets
           ts_PersoFH[i_bond]:=TTabsheet.Create(self);
           ts_PersoFH[i_bond].Caption:='Bond '+inttostr(i_bond);
           ts_PersoFH[i_bond].PageControl:=Pagecontrol_PersoFH;
     
           Pagecontrol_PersoFH2[i_bond]:=TPageControl.Create(self);
           Pagecontrol_PersoFH2[i_bond].Parent:=ts_PersoFH[i_bond];
    ...
     
           for i_onglet_perso :=1 to 5
           do begin
                //--> création des onglets
                ts_PersoFH2[i_bond,i_onglet_perso]:=TTabsheet.Create(self);
                ts_PersoFH2[i_bond,i_onglet_perso].PageControl:=Pagecontrol_PersoFH2[i_bond];
              end;
    end;

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

Discussions similaires

  1. [XL-2010] Synthèse des onglets dans un autre onglet
    Par Ghuillaume dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/03/2012, 21h46
  2. [XL-2003] copier les données d'un tableau d'un onglet dans un autre onglet suivant une condition
    Par chouki60 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/02/2011, 07h48
  3. [XL-2002] copier onglet dans un autre onglet
    Par patou41000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/04/2009, 20h58
  4. rechercher une date et copier la ligne dans un autre onglet
    Par ptitloup57 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/02/2009, 13h34
  5. Copie de cellules d'un onglet dans un autre
    Par sebicool dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/01/2009, 11h23

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