Listview numeroter les lignes [Résolu]

sagitaz 8 Messages postés dimanche 13 novembre 2005Date d'inscription 12 février 2008 Dernière intervention - 10 juin 2006 à 17:46 - Dernière réponse : cs_fjohnny 49 Messages postés lundi 16 décembre 2002Date d'inscription 18 septembre 2006 Dernière intervention
- 12 juin 2006 à 17:00
bonjour à tous

voici mon soucis, j'ai 4 colonnes dans une listview, je rempli celle-ci avec les infos des fichier que je selectionne grace a un opendialog, jusque la pas de probleme.

par contre je souhaiterais avoir dans une de mes colonnes le numero de la ligne, mais pour lui je bloque.

ensuite j'aimerais faire en sorte que si je supprime une ligne alors les numeros se remettes en ordre :
par exemple :

1
2
3
4
5

je supprime la ligne 3 et je souhaiterais avoir dans ma colonne a la place de ça :

1
2
4
5

ceci

1
2
3
4

merci d'avance pour votre aide ... précieuse.
sagitaz
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_fjohnny 49 Messages postés lundi 16 décembre 2002Date d'inscription 18 septembre 2006 Dernière intervention - 12 juin 2006 à 11:27
3
Merci
Salut,

A ta place je mettrais la numérotation dans la procédure DrawItem, cela donnera quelquechose dans ce style (j'ai pas testé, c'est pour te donner une piste).

procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
  Item: TListItem; Rect: TRect; State: TOwnerDrawState);
Var Num : Strings;
begin
      Num := InttoStr(Item.Index); {numero de la ligne}
      Items.SubItems.Add(Num); {j'ajoute pour chaque item}
end;

@+ fjohnny

Merci cs_fjohnny 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de cs_fjohnny
Meilleure réponse
cs_fjohnny 49 Messages postés lundi 16 décembre 2002Date d'inscription 18 septembre 2006 Dernière intervention - 12 juin 2006 à 17:00
3
Merci
Salut,

   L'essentiel c'est que ça marche me diras-tu...
 Mais je trouve ta méthode un peu "risquer" dans la mesure ou tu fait apelle à un edit4.text qui est modifiable par ailleurs dans ton programme (c'est peut-être pas le cas), mais s'il était modifié ce qui serait désastreux dans l'exécution de ta procédure.
Si tu me permet de te donner un conseil d'ami (c'est comme ca que doucement je progresse aussi) : D'une manière générale, on essaie de limiter au maximum les appels à des composants externes ou des variables globales.

Salutations,
fjohnny

Merci cs_fjohnny 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de cs_fjohnny
sagitaz 8 Messages postés dimanche 13 novembre 2005Date d'inscription 12 février 2008 Dernière intervention - 11 juin 2006 à 03:28
0
Merci
désolé je n'ai pas trouver comment on edite les messages sur ce forum ... si cela est possible

je passais pour vous montrer ou j'en suis apres quelques heures de lecture.

procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
    num : string;
begin
listview1.DeleteSelected; {je supprime la ligne selectionner}
with ListView1 do
for i := 0 to Items.Count - 1 do
begin
num := 'pas fait'; {numero de la ligne}
listview1.Items.Item[i].SubItems.Add(num); {j'ajoute pour chaque items}
end;
end;


voici la partie de mon code qui me sert a supprimer une ligne, je pense que je me rapproche de ce que je souhaite, demain il ferras jour.

bonne nuit a tous.
sagitaz
Commenter la réponse de sagitaz
sagitaz 8 Messages postés dimanche 13 novembre 2005Date d'inscription 12 février 2008 Dernière intervention - 12 juin 2006 à 15:41
0
Merci
merci, je vais regarder cette piste. sinon j'ai reussi a faire ce que je souhaiter d'une autre façon.


j'ai sur ma form une editbox qui me sert a afficher le nombres de
fichiers, j'incremente celle ci de + 1 a chaque ligne trouvé. mon
probleme etait de remettre en ordre les numéros lors de la suppresion
d'une ligne. voici le code qui me permet de faire cela.

procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
num : string;
begin
listview1.DeleteSelected;
edit4.clear;
edit4.Text := '0';

for i := 0 to ListView1.Items.Count - 1 do
begin
       if StrToInt(edit4.text) <> 0 then
begin
y := StrToInt(edit4.text);
edit4.text := IntToStr(y + 1);
end
else
begin
edit4.text := '1';
end;

num := edit4.Text;


listview1.Items.Item[i].SubItems.Delete(2);
listview1.Items.Item[i].SubItems.Append(num);
end;
end;

je ne sais pas si la methode employé est la bonne, mais elle fait ce que je lui demande.
Commenter la réponse de sagitaz

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.