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
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;
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.
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.
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;