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 :

Effacer un item dans un Listbox


Sujet :

Delphi

  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Par défaut Effacer un item dans un Listbox
    Bonjour !

    J aimerais savoir de quel facon je pourrais effacer un item dans
    un listbox selon le depart du texte.

    Merci encore

  2. #2
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Par défaut
    Ca manque un peu de detail hehe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    
    repeat
    if  l_item_commance_par_abc then 
    on_selectionne_le_suivant
    else
    listbox1.deleteselected ;
    on_selectionne_le_suivant ;
    until ( fin de la liste) ;
    J espere que c est mieu

    Merci !!

  3. #3
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    essai sa


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ListBox1.Items.Delete(ListBox1.Items.IndexOf('valeur a supprimer'));

  4. #4
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    zut tu veut les supprimer selon les premiere lettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Button1Click(Sender: TObject);
    var I: Integer;
    begin
    For I:=0 to ListBox1.items.Count-1 do
     begin
     if  Copy(ListBox1.Items[I],1,Length('Abc')) = 'Abc' then
      ListBox1.Items.Delete(I);
    end;
    end;

  5. #5
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut,

    La solution proposée par aityahia risque de poser des problèmes ! En supprimant un item dans la boucle d'itération, le Items.Count diminue de 1. Tu risque non seulement de passer au travers d'un item à supprimer, mais aussi d'avoir une erreur d'exécution avant de sortir de la boucle.

    Une solution simple consiste à sélectionner les items à supprimer et effectuer ensuite la suppression.

    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
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      nbSupp: integer;
    begin
      nbSuppr := DeleteItems('abc');
      ShowMessage(IntToStr(nbSuppr) + ' éléments supprimés');
    end;
     
    function TForm1.DeleteItems(s: string): integer;
    var
      i: Integer;
    begin
      with ListBox1 do begin
        MultiSelect := True;    // Si ce n'est pas le cas
        Items.BeginUpdate;
        for i:=0 to Items.Count-1 do
          Selected[i] := (Copy(Items[i],1,Length(s)) = s);
        result := SelCount;
        DeleteSelected;
        Items.EndUpdate;
        MultiSelect := False;  // Si c'était le cas
      end;
    end;
    @+ Claudius.

  6. #6
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    Citation Envoyé par Claudius40
    Salut,

    La solution proposée par aityahia risque de poser des problèmes ! En supprimant un item dans la boucle d'itération, le Items.Count diminue de 1. Tu risque non seulement de passer au travers d'un item à supprimer, mais aussi d'avoir une erreur d'exécution avant de sortir de la boucle.

    Une solution simple consiste à sélectionner les items à supprimer et effectuer ensuite la suppression.
    sa ma echaper c'est vrai c 'est une bétise

    je ne suis pas sur est ce que la variable count est initialiser a chaque suppresion d'élement ou jusqu'a ce que la boucle se termine , je vais faire un test sinon on pour avoir d'autre solution.

  7. #7
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Bonjour,

    il faut modifier la boucle For en boucle While; alors la propriété count tient compte des suppressions.

  8. #8
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Je me relie et précise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TForm1.Button1Click(Sender: TObject);
    var I: Integer;
    begin
      I:=0 
      while i<ListBox1.items.Count do
      begin
        if  Copy(ListBox1.Items[i],1,Length('Abc')) = 'Abc' then
          ListBox1.Items.Delete(I)
        else inc(i);   
      end;
    end;

  9. #9
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut Yurck !

    Bien joué, ta solution marche tout aussi bien et est plus concise !
    @+

  10. #10
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Par défaut
    Merci bcp !
    Vous etes tres efficaces !

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

Discussions similaires

  1. Deplacer des items dans un listbox
    Par chourmo dans le forum Delphi
    Réponses: 2
    Dernier message: 25/07/2006, 13h53
  2. Réponses: 3
    Dernier message: 05/07/2006, 17h29
  3. comment valider/devalider un item dans une listBox?
    Par Mickey.jet dans le forum Delphi
    Réponses: 2
    Dernier message: 30/05/2006, 07h25
  4. descendre un items dans un listbox ...
    Par netah25 dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/02/2006, 16h09
  5. [Question] Ajouter un item dans une ListBox
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 29/12/2005, 19h38

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