Comment incrementer la position d'un Listview ?

Résolu
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014 - 21 juin 2009 à 13:49
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014 - 22 juin 2009 à 22:37
Bonjour,
je n'arrive pas à incrémenter la postion d'un lisview.

Pour ce faire, j'utilise le code suivant :
ListView1.ItemIndex:=ListView1.ItemIndex+1;

Ca marche trés bien sur un listbox mais sur ce type de composant.

J'ai aussi essayé :
ListView1.SetFocus;
ListView1.ItemIndex:=ListView1.ItemIndex+1;

Mais c'est pas mieux !

Si quelqu'un à une idée ...
Merci par avance.

12 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
21 juin 2009 à 22:57
Penser à mettre la propriété HideSelection à False pouvoir faire ressortir l'élément sélectionné.
Voici le code tout simple qui passe à l'élément suivant :

procedure TForm1.Button1Click(Sender: TObject);
begin
  with ListView1 do
    if Assigned(Selected) and (Selected.Index < Items.Count - 1) then
      Selected := Items[Selected.index + 1];
end;

May Delphi be with you<hr />Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
22 juin 2009 à 12:05
ben je vois pas pourquoi ça ne fonctionnerait pas chez toi !!!
je l'ai testé dans tous les modes (vsIcon, vsSmallIcon, vsList & vsReport)
et j'ai également plusieurs colonnes !!!

 
@+
Cirec

<hr siz="" />
3
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014
22 juin 2009 à 22:37
Bonjour,

J'ai trouvé !!!
C'était la propriété MultiSelect qui m'embettait, je l'ai mis à False et l'affaire a été réglé.

Merci encore à tous.

VP.
3
Grudziecki Messages postés 3 Date d'inscription dimanche 21 juin 2009 Statut Membre Dernière intervention 21 juin 2009
21 juin 2009 à 15:01
ViewStyle propriété doit être définie à vsList ou vsReport
vers le haut (/\)

if(ListView1.ItemIndex <> 0)and(ListView1.Selected <> nil)then
  begin
    ListView1.Items.BeginUpdate;
    try
      ListView1.Items.Insert(ListView1.Selected.Index+2).Assign(ListView1.ItemFocused);
      ListView1.ItemFocused.Delete;
    finally
      ListView1.Items.EndUpdate;
    end;
  end;

vers le bas (\/)

if(ListView1.ItemIndex <> 0)and(ListView1.Selected <> nil)then
  begin
    ListView1.Items.BeginUpdate;
    try
      ListView1.Items.Insert(ListView1.Selected.Index-1).Assign(ListView1.ItemFocused);
      ListView1.ItemFocused.Delete;
    finally
      ListView1.Items.EndUpdate;
    end;
  end;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014
21 juin 2009 à 15:33
Bonjour et merci de ta réponse.
Mon listview est à VsReport et j'ai besoin d'incrementer comme suit (postion du listview actuelle +1), je dois donc aller vers le bas.

Mon probléme c'est que je n'arrive pas à utiliser ton code, ça compile mais ca n'incremente pas la postion de mon listview.

Merci de votre aide.
0
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014
21 juin 2009 à 15:41
En gros, je veux faire un bouton qu'a chaque fois que je clique dessus la position de l'itemIndex du listview avance de 1.
0
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014
22 juin 2009 à 00:17
Merci DelphiProg pour ta réponse.

Mais j'ai mon Listview qui ne s'incremente pas de sa position initiale.
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
22 juin 2009 à 00:34
Salut,

tu ne vois pas la sélection changer parce que la ListView n'a plus le focus !!!
essaye comme ça :
procedure TForm1.Button1Click(Sender: TObject);
begin
  with ListView1 do
    if Assigned(Selected) and (Selected.Index < Items.Count - 1) then
    begin
      Selected := Items[Selected.index + 1];
      SetFocus ;
    end;
end;

 
@+
Cirec

<hr siz ="" />
0
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014
22 juin 2009 à 00:59
J'ai deux lignes sur mon listview qui se selectionne à partir de ma position initiale mais mon mon listview ne s'incremente pas.

J'en suis sur car j'ai fait un : ShowMessage(IntToStr(ListView1.ItemIndex));
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
22 juin 2009 à 01:28
ps: avec le premier code il faut sélectionner le premier Item en cliquant dessus

mets un showmessage avant et après et tu verras que sa valeur change !!!!

voici un autre code qui fonctionne dans tous les cas

procedure TForm1.Button11Click(Sender: TObject);
begin
  with ListView1 do
  begin
    if Assigned(Selected) and (Selected.Index < Items.Count - 1) then
    begin
      //ShowMessage(IntToStr(ListView1.ItemIndex));
      Selected := Items[Selected.index + 1];
      //ShowMessage(IntToStr(ListView1.ItemIndex));
    end
    else
    if Items.Count > 0 then
      Selected := Items[0];
    SetFocus;
    end;
end;

ce code a été testé et fonctionne parfaitement (comme le premier d'ailleurs )!!!

 
@+
Cirec

<hr siz="" />
0
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014
22 juin 2009 à 01:56
Merci de votre patience, je fais un peu demeuré mais ce code (dans mon cas) ne fonctionne pas.

J'ai plusieurs collones, ça peut avoir un rapport ?
0
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014
22 juin 2009 à 14:48
Quelque chose doit m'échapper alors, je vais bien revoir ceci. En tous cas merci encore.

Cordialement,
0
Rejoignez-nous