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 :

Delete de composant dans un GroupBox [Non suivi]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    maw
    maw est déconnecté
    Membre averti
    Inscrit en
    Août 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 19
    Par défaut Delete de composant dans un GroupBox
    bonsoir,
    voici mon pb.
    J'insere dynamique des composants dans un group box et je les supprime, pour l'ajout ca va. Pour la suppression j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    TControl *temp;
    int nbControl = gbCat->ControlCount;
     
     for(int i= nbControl ; i>0;i--){
            temp = gbCat->Controls[i-1];
            gbCat->RemoveControl(temp);
     }
    Ca marche mais c lent. Avez vous une autre solution plus simple ou plus rapide. J'ai pas mal cherché mais pas trouvé de fonction qui remove tout les controles d'un coup.
    Merci.

  2. #2
    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,
    T'as essayé le delete ?

  3. #3
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    bonjour,
    dans la construction dynamique des composants contenu dans le groupBox,
    il te suffit d'affecter la property Owner des composants crés avec le groupBox

    lors de la destruction de la GroupBox tous les composants contenu dans ce container seront automatiquement détruit
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     grpBox;    // Pointeur sur ta groupeBox crée statiquement
     TLabel *mlabel= new TLabel(grpBox);  // creation d'un object Label
     TButton* mbuton = new TButton(grpBox);
    




    Cordialement

    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  4. #4
    maw
    maw est déconnecté
    Membre averti
    Inscrit en
    Août 2003
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 19
    Par défaut
    oui mais non car je ne delete pas le groupbox, je delete uniquement les controles que j'ai placé dedans.

  5. #5
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    En principe, on ne supprime pas les composants, sauf nécessité explicable, ce qui est rare, on joue simplement sur leur visiblité. De plus, la documentation déconseille d'utiliser RemoveControl.

    Donc pour rendre invisibles les composants un GroupBox, on peut écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int i ;
    for(i=0;i<GroupBox1->ControlCount;i++) GroupBox1->Controls[i]->Visible=false;
    À bientôt
    Gilles

  6. #6
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Par défaut
    Citation Envoyé par Gilles Louïse
    En principe, on ne supprime pas les composants, sauf nécessité explicable, ce qui est rare, on joue simplement sur leur visiblité. De plus, la documentation déconseille d'utiliser RemoveControl.
    La nécessité pourrait être que les contrôles sont totalement dynamiques en ce sens qu'ils sont chargés d'un fichier ou sur des évenements très dépendant du périmètre extérieur à l'application de manière générale.

    Sinon, effectivement, affecter un Owner à NULL à la création, puis supprimer le contrôle avec delete me semble adéquat.

    Au niveau vitesse, il se peut que ce soit le raffraichissement graphique qui ralentisse la chose.

    Tu devrais voir si tu ne pourrais pas locker la mise à jour graphique avec quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    LockWindowUpdate(GroupBox1->Handle);
    // actions
    LockWindowUpdate(0);

Discussions similaires

  1. Glisser un composant dans une GroupBox ou Onglet
    Par Maxime-B dans le forum Composants VCL
    Réponses: 3
    Dernier message: 24/08/2011, 10h05
  2. [VB.NET] Controles dans un GroupBox
    Par Poussera dans le forum Windows Forms
    Réponses: 11
    Dernier message: 15/10/2004, 12h54
  3. [C#] Ajouter son propre composant dans Design de VS.Net
    Par yannick_sch dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/08/2004, 11h14
  4. [Delphi] Icone des composants dans la palette
    Par jacquesberger dans le forum Composants VCL
    Réponses: 2
    Dernier message: 13/04/2004, 15h42
  5. exploiter un évènement d'un sous composant dans un
    Par bjl dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/12/2002, 16h44

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