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 :

Supprimer un TImage dans un Tlist


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club

    Homme Profil pro
    En recherche d'emploi sur la région de Toulouse
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En recherche d'emploi sur la région de Toulouse
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Points : 34
    Points
    34
    Billets dans le blog
    1
    Par défaut Supprimer un TImage dans un Tlist
    Bonjour, Je cherche a supprimer des images créer dans un TList,comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if(this->Images==NULL)
       {
    	this->Images=new TList();
    	for (int i= 0; i < 13; i++)
    		{
    		X_ImageCarte = new TImage(this);
    		//this->Images->Add(new X_ImageCarte(this));      pourquoi ça marche pas????
    		this->Images->Add((void*)X_ImageCarte);
    		X_ImageCarte->Parent=this->GroupBox1;
    		}
    	}
    J'ai bien essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (Images!=NULL)
    	{  
    		for(int i=this->Images->Count-1;i>=0;i--)
    		{
    delete this->Images->Items[i];  
    this->Repaint();
    				}
    avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TImage *X_ImageCarte;
    TList *Images;
    Mais ça marche pas, l'image est bien supprimée du TList mais elle est toujours présente a l'écran.
    si vous avez une idée...
    Merci d'avance

  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
    Tu as essayé de faire un Refresh()

  3. #3
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    TImage *X_ImageCarte;
    TList *Images;
    //this->Images->Add(new X_ImageCarte(this)); pourquoi ça marche pas????
    Comme X_ImageCarte est un pointeur, le fait de faire un new créerait un pointeur et non l'objet (TImage) pointé par le pointeur.
    Et comme un pointeur ne nécessite aucun constructeur à la création... BCB ne comprend pas !

    if (this->Images != NULL)
    {
    for(int i = this->Images->Count-1; i >= 0; i--)
    {
    delete this->Images->Items[i];
    }
    }
    this->Repaint();
    Ca ne peut pas fonctionner puisqu'un pointeur de la liste ( Items[n] ) n'a pas de type ( void* ) donc à ce stade BCB ne sait pas quoi détruire !

    En sens retro on peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if(Images != NULL)
        {
        while(Images->Count != 0)
            {
            // Destruction d'un TImage
            delete (TImage*)Images->Last();
            // Mise à jour de la liste
            Images->Delete(Images->Count-1);
           }
        }
    Repaint(); //Tester si c'est utile ou pas !
    Dans ce code, non seulement on supprime l'objet TImage mais en même temps on purge la liste... sans quoi, la liste maintiendrait (Count) pointeurs non valides, les objets ayant été détruits (au cas où ... !!!) !

    Ne pas oublier que si l'objet crée une liste (TList) il devrait aussi la détruire à un moment ou un autre... sans doute à la destruction de l'objet (ou après la destruction des TImage).

    Par contre je ne comprends pas l'utilité du this dès lors que ce code appartiendrait à une méthode membre.
    L'objet accède à ses propres propriétés et non à celles des voisins !

    A plus !

  4. #4
    Nouveau membre du Club

    Homme Profil pro
    En recherche d'emploi sur la région de Toulouse
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En recherche d'emploi sur la région de Toulouse
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Points : 34
    Points
    34
    Billets dans le blog
    1
    Par défaut
    Merci pour ta reponse henderson, j'essaye ça bientôt et je te tiens au courant.
    Un grand merci pour les explications, pour info je débute en prog.

    @ bientôt

  5. #5
    Nouveau membre du Club

    Homme Profil pro
    En recherche d'emploi sur la région de Toulouse
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En recherche d'emploi sur la région de Toulouse
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Points : 34
    Points
    34
    Billets dans le blog
    1
    Par défaut
    J'ai testé .... ça marche c'était bien ça !!!
    Un grand merci a toi henderson

    @++

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. Supprimer la croix dans une fenêtre modale
    Par AnneOlga dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/01/2004, 14h52
  3. [LG]supprimer un enregistrement dans un fichier
    Par Marcus2211 dans le forum Langage
    Réponses: 10
    Dernier message: 17/11/2003, 00h59
  4. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

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