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

Langage Delphi Discussion :

[TPageControl] Ajouter un tabsheet dynamiquement


Sujet :

Langage Delphi

  1. #1
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 925
    Points : 6 040
    Points
    6 040
    Par défaut [TPageControl] Ajouter un tabsheet dynamiquement
    Je dispose d'un pagecontrol contenant 1 tabsheet "invariant".

    En fonction d'éléments variables, je souhaite ajouter 1 ou plusieurs tabsheet(s).

    sous D6P, l'aide rapporte
    NewTabSheet = TTabSheet.Create(PageControl1);

    NewTabSheet.PageControl := PageControl1;
    J'ai déjà 1 doute sur la syntaxe de la 1ère ligne

    Mais ce NewTabSheet, il sort d'où ? et c'est quoi ? (un TComponent fourre-tout ?)
    Parceque s'il s'agit de déclarer autant de NewTabSheetx qu'on peut en avoir besoin, je vois pas bien l'aspect dynamique de la chose

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    tu peux faire comme ça chaque fois que tu veux ajouter un TTabSheet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var NewTabSheet: TTabSheet;
    begin
      with TTabSheet.Create(PageControl1) do
      begin
        PageControl:=PageControl1;
        //Toutes sortes d'initialisation...
      end;
    end;
    Voila...

  3. #3
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Pourquoi avoir un doute sur la première ligne? Cela crée et TabSheet dont le owner est le tabcontrol. Comme cela, quand le tabcontrol est détruit, tout se détruit.

    Cela me semble OK (as-tu testé?)

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    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
     
    procedure CreatePage(sName,sCaption,sNum : String);
    var
      Tab : TTabSheet;
    begin
     
      Tab := TTabSheet.Create(Self);
      With Tab do
      begin
        PageControl := JvPageControl1;
        Name := sName + sNum;
        Caption := sCaption;
        TabVisible := True;
        Visible := True;
      end;
      JvPageControl1.ActivePageIndex := JvPageControl1.PageCount -1;
    end;
    Voici un exemple d'une procédure que j'utilise pour iniialiser des nouvelles pages dans mon pagecontrol (la c'est un jvPagecontrol, mais ca fonctionne avec le Pagecontrol de base)

  5. #5
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut Re: [TPageControl] Ajouter un tabsheet dynamiquement
    Citation Envoyé par qi130
    J
    NewTabSheet = TTabSheet.Create(PageControl1);

    NewTabSheet.PageControl := PageControl1;
    NewTabSheet est une variable de type TTabSheet déclarée avant le bout de code ci dessus

    donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure maprocedure;
    var
      newtabSheet : TTabSheet;
    begin
      //Création du tabSheet
      NewTabSheet = TTabSheet.Create(PageControl1);
      //Assignation du nouveau tabsheet à notre pagecontrol
      NewTabSheet.PageControl := PageControl1;
    end;
    est-ce plus clair ?

  6. #6
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 925
    Points : 6 040
    Points
    6 040
    Par défaut
    Citation Envoyé par eponette
    Pourquoi avoir un doute sur la première ligne? Cela crée et TabSheet dont le owner est le tabcontrol. Comme cela, quand le tabcontrol est détruit, tout se détruit.

    Cela me semble OK (as-tu testé?)
    A la lecture du code fourni, celà ne peut fonctionner à cause de l'affectation "=" au lieu de ":="

    Sylvain: idem pour ton code

    Pedro Ok, le code fonctionne - Merci
    par contre, pas besoin de déclarer la variable :

  7. #7
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Quelle variable? NewTabSheet? Avec cette structure ce n'est plus la peine

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

Discussions similaires

  1. [ImageMagick] Ajouter un texte dynamique à une image
    Par masseur dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 14/02/2006, 16h24
  2. [VB.Net] Ajout de composant dynamique
    Par le Daoud dans le forum ASP.NET
    Réponses: 4
    Dernier message: 13/02/2006, 12h21
  3. [VB.NET] Ajout de controles dynamiquement
    Par A77 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/04/2005, 10h00
  4. [C#] ajouter une image dynamiquement
    Par h_imane dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 12h27
  5. ajouter un champ dynamiquement à une instance de table
    Par maniack dans le forum Bases de données
    Réponses: 2
    Dernier message: 29/02/2004, 00h58

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