begin process at 2010 02 10 14:09:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

listbox et savoir si il y a une items qui est vide alors supprime..


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

listbox et savoir si il y a une items qui est vide alors supprime..

jeudi 9 avril 2009 à 19:36:13 | listbox et savoir si il y a une items qui est vide alors supprime..

shell13010

Bonsoir a tous,

J'aimerais savoir si dans un listbox il y a des items qui son vide alors on les supprimes... exemple

cooooo
      //ici c'est vide alors on supprime..
ooo
      //ici c'est vide alors on supprime..
ool.

auriez vous une idée?

merci d'avance.
jeudi 9 avril 2009 à 19:45:11 | Re : listbox et savoir si il y a une items qui est vide alors supprime..

JulioDelphi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
salut

for i:= ListBox.Count-1 downto 0 do
  if ListBox.Items[i]='' then
    ListBox.Items.Delete(i);

a+
jeudi 9 avril 2009 à 19:50:11 | Re : listbox et savoir si il y a une items qui est vide alors supprime..

shell13010

merci bien JulioDelphi  c'etais tout bete mais fallais le savoir

bonne fin de soirée..
jeudi 9 avril 2009 à 21:29:22 | Re : listbox et savoir si il y a une items qui est vide alors supprime..

Bacterius

Membre Club
Ouais, je tiens à indiquer que JulioDelphi parcourt la listbox à l'envers car quand on supprime un élément de la liste avec Delete, tous les éléments "descendent" d'un rang, pour évider qu'il y ait un trou. Donc, dans ce sens, on s'adapte automatiquement au décalage. Alors que si l'on fait de 0 à ListBox.Count - 1, on accentuera le décalage, ce qui pose des problèmes.

Voilà ...

Cordialement, Bacterius !
vendredi 10 avril 2009 à 07:44:06 | Re : listbox et savoir si il y a une items qui est vide alors supprime..

JulioDelphi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Ok alors je la fait dans le "bon" sens :

procedure TForm1.Button1Click(Sender: TObject);
var i, j, nb: integer;
begin
  nb:= ListBox1.Count-1;
  i:= 0;
  while i < nb do
  begin
    if ListBox1.Items[i]='' then
    begin
      ListBox1.Items.Delete(i);
      Dec(nb);
    end
    else
      Inc(i);
  end;
end;


On comprends surement mieux le problème de le faire comme ça.
vendredi 10 avril 2009 à 14:46:16 | Re : listbox et savoir si il y a une items qui est vide alors supprime..

Bacterius

Membre Club
Mais ta première solution est la meilleure ;)
Sinon tu peux le faire avec une boucle for..do aussi :

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to ListBox1.Items.Count - 1 do
   if ListBox1.Items[I] = '' then
     begin
      ListBox1.Items.Delete(I);
      asm DEC I; end;
     end;
end;

Tu utilises l'asm car Delphi veut pas que tu touche à la variable de contrôle de boucle ...

Cordialement, Bacterius !
vendredi 10 avril 2009 à 15:07:27 | Re : listbox et savoir si il y a une items qui est vide alors supprime..

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !


parcourt la listbox à l'envers car quand on supprime un élément de la liste avec Delete, tous les éléments "descendent" d'un rang

remonte d'un rang ...
si je supprime index 10, alors index 11, 12... remonte de 1 donc deviennent 10 et 11

la premiere solution de JulioDelphi est la bonne methode, ont pourrait y ajouter pour plus de performance :

ListBox1.Items.BeginUpdate;
try

  for I := ListBox1.Count-1 downto 0 do
    if ListBox1.Items[I] = EmptyStr then
      ListBox1.Items.Deletes(I);
finally
  ListBox1.Items.EndUpdate;
end;


cela empeche les appels inutiles a la methode OnChange de TListBox, pendant le traitement, les gains sont assé important et peuvent aller de plusieurs secondes a quelques minutes.



vendredi 10 avril 2009 à 15:18:05 | Re : listbox et savoir si il y a une items qui est vide alors supprime..

Bacterius

Membre Club
Oui mais je voulais dire descendent vers le début de la liste ^^ mais je n'étais pas clair.

Cordialement, Bacterius !
vendredi 10 avril 2009 à 15:48:43 | Re : listbox et savoir si il y a une items qui est vide alors supprime..

JulioDelphi

Membre Club Administrateur CodeS-SourceS
@foxy : très bonne idée que je connaissais pas !
@bacterius : oui mais ASM quoi ... lol faut connaitre :] c'est presque de la triche ^^ mais tant que ça marche et que ça compile :p
vendredi 10 avril 2009 à 18:20:30 | Re : listbox et savoir si il y a une items qui est vide alors supprime..

f0xi

Membre Club Administrateur CodeS-SourceS

oui c'est trés important de placer le beginupdate et endupdate, attention ce dernier utilise TOUJOURS un bloc try finally!

chaque appel a Add, Insert, Exchange, Delete, Move, Remove etc declanche l'evenement Change des objets liste (TStrings), evenement qui peut declancher a son tour le rafraichissement du dessins de l'objet sur la fiche et cela ralentit enormenent les traitements.
pour 1000 entrées et selon le traitement, on peu gagner ~50% du temps.
pour 10000 ~70%
pour 100000 ~90%
 





1 2

Cette discussion est classée dans : listbox, vide, items, ici, supprime


Répondre à ce message

Sujets en rapport avec ce message

Supprimer Item ListBox [ par RocketSpawn ] Ayant 2 liste box, j'aimerais que lorsque je supprime un item dans la première cela supprime l'item dans la deuxième :Dsans passer par ListBox.DeleteS scrollbar des listbox [ par Nebula ] Bonjour à tous, J'aimerais faire en sorte que mes listbox désactivent leur scrollbar verticale au lieu de la masquer lorsqu'il n'y a pas assez d'item Listbox erreur [ par Valeriu ] J'ai mit une timer sur un form.A chaque 300 ms il prenne le contenu d'un fichier text et il le met dans une listbox.La pb c'est qu'il le met aussi sur Deplacer des items dans un listbox [ par seba31stien ] Bonjour, j'utilise un composant TUpDown pour déplacer les items d'un listbox. or je n'arrive pas à modifier la propriété itemindex de l'élément sélect handle [ par lugdanum ] bonsoir voilà je récupère toutes les fenetres d'ouvertes dans une listbox et je voudrais qu'elles se ferment toutes. j'ai regardé les exemples sur le RAJOUT D'UN STRING DANS LISTBOX ET SAUVEGARDE [ par guy jeuniaux ] JE reformule car il y a eu erreur dans le message précédentJe met un listbox sur ma form.Dans la propriété items je rentre quelques strings.Je met un listbox items [ par TouTSpeed ] bonjour à tous voila je débute en delphi (dephi 6)et j'ai un léger problèmesj'ai deux listbox      listbox1 et listbox2dans la première j'arrive à sél Erreur d'imbrication des boucles? Comparer 2 listbox [ par dhp9951 ] Bonsoir, par utilisation des boucles, je veux comparer le contenu d'une listbox2 avec le contenu d'une listebox1 et si un item est identique, copier c Comment faire la somme d'items [ par Francky23012301 ] Salut à tous : Voila j'ai une listbox contenant différents items : J'ai besoin de récuperer dans un TEdit l'ensemble des itemps par exemple "Edit1.t Calculer le nombre d'Items dans ma ListBox [ par kangourouxxx ] Bonjour, je cherche désespérément comment faire pour connaitre combient d'items sont enregistrer dans le corp de ma listBox.Car j'ai fait un petit log


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,388 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales