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 :

[debutant]supprimer image


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 21
    Points : 18
    Points
    18
    Par défaut [debutant]supprimer image
    salut,
    j'essaie de faire une visionneuse,
    quand je la selctionne l'image s'affiche bien, mais je n'arrives pas faire en sorte que rien ne soit affiché losrque je supprime l'image...
    si quelqu'un pourrait essayer de m'eclairer...

    voila une partie du code :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
            {
            ListeFichiers = new TStringList ;
            }
     
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)     //bouton ajouter
        {
         OpenDialog1->Title = "ouverture de fichier";
         if (OpenDialog1->Execute())
             {
             int index;
                ListeFichiers->Sort(); //find ne marche que sur les listes triées
            if (ListeFichiers->Find((OpenDialog1->Files)->Strings[0],index))
                   {
                      Application->MessageBox("Ce fichier existe deja", NULL, MB_OKCANCEL) ;
                    }
               else
                    {
                    ListeFichiers->Add((OpenDialog1->Files)->Strings[0]);
                    CreationListe();
                    }
              }
        }
    //---------------------------------------------------------------------------
     
    void TForm1::CreationListe()     //sert a remplir liste fichier
    {
        for (int i = ListBox1->Items->Count - 1; i >= 0 ; i--)
            {                                      //retire les elements de listbox
                 ListBox1->Items->Delete(i);
            }
        int ImagePosition = 10;
     
        for (int i=0; i<ListeFichiers->Count; i++)
                {             //mets les elements de liste fichiers dans la listbox1
     
            AnsiString Extension = ExtractFileExt(ListeFichiers->Strings[i]).LowerCase();
            TImage *Image = Image1;
            Image->Top = ImagePosition;
            Image->Left = 10;
                 if (Extension==".bmp")                     //si c'est un .bmp
                         {
                    Image->Picture->LoadFromFile(ListeFichiers->Strings[i]);
                         }
    ListBox1->Items->Add(ExtractFileName(ListeFichiers->Strings[i]));  //ajoute nom dans listbox1
                 }
    }
    void __fastcall TForm1::Button2Click(TObject *Sender)         //bouton supprimer
    {
    for (int i = ListBox1->Items->Count - 1; i >= 0 ; i--)
        {
            if (ListBox1->Selected[i])
                {
                 ListeFichiers->Delete(i);
                 ListBox1->Items->Delete(i);
                 Label1->Caption="";
                 ListBox2->Items->Delete(i);// vider listbox2
                 Image1->Refresh();
                 }               
        }
    }
    les images sont affichés dans liste 2

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 67
    Points : 108
    Points
    108
    Par défaut
    As tu essayé en faisant un refresh de la listbox et pas seulement de l'image ?

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    ca change rien, l'image persiste, mais je n'y avais pas pensé...

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Salut, il est normal que l'image persiste car la suppression dans ta listbox n'entraîne en rien la libération de l'image chargée en mémoire par le TImage.

    La méthode Refresh redessine donc l'image contenue en mémoire.

    il faut que tu utilises l'instruction suivante pour libérer l'image
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Image1->Picture->Bitmap->FreeImage();
    De plus, pour vider une list box tu peux utiliser
    A+

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    arf, j'y croyais en plus mais elle veut pas partir...
    au pire je vais faire un bitmap vide pour le charger
    mais bon ca le fait pas...

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Cela suffit pour une image jpeg mais pas pour du BMP.

    Inscrit cette séquence à l'endroit de la suppression de l'image et cela devrait fonctionner cette fois-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Image1->Picture->Bitmap->FreeImage();
        Image1->Picture->Bitmap->ReleaseHandle();
        Image1->Refresh();
    A+

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    hourra elle a disparu ! !
    sinon j'avais carrément fais ca :

    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
     
    void __fastcall TForm1::Button2Click(TObject *Sender)         //supprimer
    {
    for (int i = ListBox1->Items->Count - 1; i >= 0 ; i--)
        {
            if (ListBox1->Selected[i])
                {
                 ListeFichiers->Delete(i);
                 ListBox1->Items->Delete(i);
                 Label1->Caption="";
                 TImage *Image = Image1;
                 Image->Parent = ListBox1;
     
                 }               //trouver vider listbox2
        }
    }
    mais ta méthode est plus propre je trouve, je te remercie

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

Discussions similaires

  1. [debutant] get image avec une variable non static
    Par laguna dans le forum Langage
    Réponses: 2
    Dernier message: 06/03/2006, 15h57
  2. [debutant]Supprimer l'autoIncrement d'un champ
    Par goony dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/02/2006, 12h22
  3. [DEBUTANT]Supprimer les espaces pour une requete
    Par tripper.dim dans le forum Oracle
    Réponses: 4
    Dernier message: 12/10/2005, 16h04
  4. [debutant] supprimer elements dans une listbox
    Par F.F. dans le forum C++Builder
    Réponses: 8
    Dernier message: 02/07/2004, 11h38
  5. [debutant][Tomcat]Images qui ne s'affichent pas
    Par omega dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/04/2004, 09h44

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