begin process at 2012 02 14 12:52:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

General

 > 

Au sujet du contrôle listView suppression ligne(s)


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

Au sujet du contrôle listView suppression ligne(s)

mardi 6 juin 2006 à 16:54:57 | Au sujet du contrôle listView suppression ligne(s)

Tanaka56

Bonjour à tous.

Sur mon contrôle "ListView1" j'ai coché MultiSelect.
Je peux donc sélectionner une où plusieurs lignes soit contigus ou pas.

 

Seulement comment les supprimer après les avoir sélectionnées?

Merci de vos réponses.


Cordialement.

 

mardi 6 juin 2006 à 17:24:00 | Re : Au sujet du contrôle listView suppression ligne(s)

jrivet

Membre Club
Salut,

Essaie un truc du genre:

Dim i As Integer 
For i = ListView1.ListItems.Count To 1 Step -1 
    If ListView1.ListItems(i).Selected Then 
        Call ListView1.ListItems.Remove(i) 
    End If 
Next 
 


Coloration syntaxique automatique [AFCK]
       

ATTENTION les items ont été ajoutés sans index, peu être que cela change si tu les ajoutes avec des index

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
mardi 6 juin 2006 à 17:29:10 | Re : Au sujet du contrôle listView suppression ligne(s)

addamsmercredi

Lorsqu'il y a beaucoup de lignes, la méthode suivante est beaucoup plus rapide :

Dim item As ListViewItem
For Each item In ListView1.SelectedItems
   ListView1.Items.Remove(item)
Next

mardi 6 juin 2006 à 17:46:26 | Re : Au sujet du contrôle listView suppression ligne(s)

Gobillot

celle ci est plus rapide:





Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Dim i As Integer 
For i = ListView1.ListItems.Count To 1 Step -1 
      If ListView1.ListItems(i).Selected Then 
          PostMessage Listview1.hwnd, &H1008&, i, 0
      End If 
Next

Daniel
mardi 6 juin 2006 à 18:46:28 | Re : Au sujet du contrôle listView suppression ligne(s)

Tanaka56


Merci à tous pour vos solutions.
Cordialement.
Alain
mardi 6 juin 2006 à 19:00:02 | Re : Au sujet du contrôle listView suppression ligne(s)

Gobillot

en fait, il semblerait que le nombre de PostMessage est limité à 10000
en dessous de 10000 pas de problème, pas de moment d'attente, pour la vitesse il y a pas photo, 50 fois plus rapide,
tous les "remove" se faisant à la fin.


au dessus de 10000, il faut insérer des Doevents, et là on perd pas mal de temps, mais dans l'ensemble c'est encore un peu plus rapide.
à noter aussi le i-1 dans PostMessage

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Dim i AsLong
For i = ListView1.ListItems.Count To 1 Step -1 
      If ListView1.ListItems(i).Selected Then 
          PostMessage ListView1.hwnd, &H1008&, i - 1, 0
          If (i And &H1FFF&) = 0 Then DoEvents
      End If 
Next

Daniel
mardi 6 juin 2006 à 19:52:55 | Re : Au sujet du contrôle listView suppression ligne(s)

addamsmercredi

Je n'ai pas comparé la rapidité de Remove avec PostMessage car je ne connaissais pas cette dernière et je n'ai pas VB.NET ni VB 2005 ici pour tester (je les ai seulement au travail). Mais ce dont je suis sûr car déjà testé et retesté, c'est que pour parcourir une listview, il faut absoluement éviter d'utiliser une boucle du genre "For i = ListView1.ListItems.Count To 1 Step -1" ou "For i = ListView1.ListItems.Count To 1 Step -1" car c'est affreusement long à cause de l'instruction "ListView1.ListItems(i)". Une boucle "For Each" est beaucoup beaucoup plus rapide ! Il n'y a pas photo ! De plus, ce n'est pas forcément judicieux de parcourir toutes les lignes pour ne concerver que celles qui sont sélectionnées, il suffit de parcourir seulement les lignes sélectionnées. Ma méthode couplée à la fonction PostMessage donnerait sûrement une version bien plus rapide.
mardi 6 juin 2006 à 20:01:35 | Re : Au sujet du contrôle listView suppression ligne(s)

Gobillot

le problème c'est qu'ici cest VB6
donc pas de collection pour la ListView
et ta solution ne marche pas

Daniel
mardi 6 juin 2006 à 20:15:08 | Re : Au sujet du contrôle listView suppression ligne(s)

addamsmercredi

Oups désolé, je pensais que les listview n'existaient pas sur VB6 donc j'ai tout de suite pensé que c'était sous VB.NET ou VB 2005. Désolé.


Cette discussion est classée dans : ligne, contrôle, listview, suppression, sujet


Répondre à ce message

Sujets en rapport avec ce message

Colorier 1 ligne sur 2 dans le contrôle ListView [ par Patrik ] Salut,Je suis à la recherche du source me permettant de colorier les lignes paires ou impaires de mon contrôle ListView.Merci à tous ceux qui pourront Suppression ligne ListView [ par jeromepol49 ] Je souhaite supprimer une ligne ENTIERE dans une listview (même la première colonne car j'arrive à supprimer tous les éléments d'une ligne mais pas la Important sujet : ListView [ par ndro ] tout dabord bonjour !!!!!!!!Je doit faire un chat pour un reseau LAN, et j'ai choisi d'utiliser les listview pour faire cela car on peux changer la co Au sujet du contrôle listView ou datagrid [ par Tanaka56 ] Bonjour,Merci de m'indiquer ou je peut me procurer le contrôle listView ou datagrid?J'ai Visual Basic 6.Salutations à tous. Au sujet du contrôle listView [ par Tanaka56 ] Bonjour.Je voudrais dans un contrôle ListView remplir des lignes et des colonnes !Pour exemple je n'ai uniquement choisi que trois colonnes :<img alt= Listview avec vignettes en dehors du contrôle... [ par misterN ] Bonjour, Les vignette de mon listview sont alignée sur une ligne et dépassent du contrôle. Même en utilisant la commande ".Arrange" lvwNone = ne réa Création d'un contrôle personnalisé. [ par guilleto ] Bonjour à toutes et tous, Je cherche à réaliser un contrôle assez complexe (à mon niveau). Je voudrais faire un listing dont chaque ligne serait ratt Chercher un mot dans listview et coloer la ligne [ par sihammaster ] Bonjour, Je voudrais creer un code qui permet de parcourir une listview et cherche un mot dans la colonne par ex:3, s'il le trouve il va coloré toute Comment envoyer plusieurs lignes à une listview ? [ par Adn56 ] Bonsoir la team, Voici un probléme surrement trés simple à régler, mais je ne trouve pas la soluce. Dans mes class de données j'utilise une fonction t Alterner deux couleurs des lignes du contrôle Listview [ par bonagad ] bonjour, j'aimerais alterner de deux couleurs les lignes d'un contrôle Listview lorsque je charge les données depuis une table de base de données. mer


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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,076 sec (4)

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