Bonjour !
J aimerais savoir de quel facon je pourrais effacer un item dans
un listbox selon le depart du texte.
Merci encore
Bonjour !
J aimerais savoir de quel facon je pourrais effacer un item dans
un listbox selon le depart du texte.
Merci encore
Ca manque un peu de detail hehe
J espere que c est mieu
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) ;
Merci !!
essai sa
Code : Sélectionner tout - Visualiser dans une fenêtre à part ListBox1.Items.Delete(ListBox1.Items.IndexOf('valeur a supprimer'));
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;
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.
@+ Claudius.
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;
sa ma echaper c'est vrai c 'est une bétiseEnvoyé par Claudius40
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.
Bonjour,
il faut modifier la boucle For en boucle While; alors la propriété count tient compte des suppressions.
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;
Salut Yurck !
Bien joué, ta solution marche tout aussi bien et est plus concise !![]()
@+
Merci bcp !
Vous etes tres efficaces !![]()
Partager