Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Intervertir deux lignes d'un ListView [ Système / Exécution ] (informatixo)

jeudi 16 octobre 2008 à 09:21:48 | Intervertir deux lignes d'un ListView

informatixo

Membre Club
Bonjour le forum,

J'ai un petit souci avec le code suivant :

procedure TForm2.Button1Click(Sender: TObject);
var
  ItemTampon: TListItem;

begin
  ItemTampon := ListView1.Items[1];
  ListView1.Items[1] := ListView1.Items[0];
  ListView1.Items[0] := ItemTampon;
end;

Le problème avec ce code c'est que j'ai deux fois la même ligne dans le ListView après l'inversion.

Dès que la deuxième instruction est passée, "ItemTampon" prend aussi la nouvelle valeur. Ce qui me fait dire que c'est c'est n'est pas une affectation de valeur mais de référence, j'ai l'impression que "ItemTampon" pointe vers la valeur de "ListView1.Items[1]".

Quelqu'un pourrait-il me venir en aide SVP ? Je n'arrive pas à retrouver le message du forum qui expliquait le mécanisme pour copier en valeur et non par référence.

Je vous remercie par avance et bonne journée.

Que la force soit avec vous !

jeudi 16 octobre 2008 à 18:52:40 | Re : Intervertir deux lignes d'un ListView

cantador

Membre Club
bonsoir,
ça nous dit pas ce que tu veux faire !

cantador

jeudi 16 octobre 2008 à 20:34:33 | Re : Intervertir deux lignes d'un ListView

cirec

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

essaye comme ça:

var aItem: TListItem;
begin
  aItem := TListItem.Create(ListView1.Items);
  try
    with ListView1 do
    begin
      aItem.Assign(Items[0]);
      Items.BeginUpdate;
      Items[0] := Items[1];
      Items[1] := aItem;
      Items.EndUpdate;
    end;
  finally
    aItem.Free;
  end;
end;


 
@+
Cirec


jeudi 16 octobre 2008 à 23:17:23 | Re : Intervertir deux lignes d'un ListView

informatixo

Membre Club
Je suis désolé si je n'ai pas été assez clair mais je crois que cirec a compris ce que je voulais faire.

Imaginons que j'ai une simple ListView avec deux colonnes et trois lignes, je veux pouvoir intervertir deux lignes en cliquant sur un bouton par exemple. Ceci est un problème simpliste mais il me permettras de régler mon problème plus complexe.

Cirec ton code fonctionne parfaitement. De mon côté j'avais essayé avec le "Create" mais comme je ne faisait pas le "Assign" après ça ne marchait pas.

Quelqu'un pourrait-il m'expliquer pourquoi même après un "Create" l'instruction "ItemTampon := ListView1.Items[1];" ne fonctionne pas comme une affectation de variable traditionnelle et qu'il faut impérativement faire un "Assign" ? En effet, si je change "ListView1.Items[1]" à l'instruction suivante et bien "ItemTampon" change aussi alors que si je prend l'exemple suivant ça fonctionne :

var
  a, b: Integer;

begin
  b := 5;
  a := b;
  b := 7;
  ShowMessage(IntToStr(a)); // Ici a vaut bien 5 et non pas 7.
end;

Certes mon problème est résolu mais je souhaite, ne serais-ce que pour progresser, avoir une réponse à cette dernière question ou du moins une piste pour que je puisse trouver le pourquoi du comment.

En attendant, un grand merci à tous les deux pour votre aide et bonne continuation à tous..

A plus.

Que la force soit avec vous !

vendredi 17 octobre 2008 à 11:19:22 | Re : Intervertir deux lignes d'un ListView

cantador

Membre Club

Je suis désolé si je n'ai pas été assez clair...

Non, non en fait, le titre est réservé au thème et la question doit-être formulée dans le corps du message et du coup j'en ai oublié le titre..
Mais comme cirec, un p'ti gars tout frêle, menu, pauvre et désoeuvré a vu de la lumière allumée il est entré et a pris une bière (lol)

Et il a un gros défaut, il trouve en général les bonne réponses et son code fonctionne nickel chrome.

Tu vas bien cirec ?

cantador




Cette discussion est classé dans : valeur, listview, listview1, items, itemtampon


Répondre à ce message

Sujets en rapport avec ce message

insert dasn un listview [ par skiso ] listview1.Items.Insert(0);listview1.Items.Item[0].Caption:='jjjjjj';listview1.Items.Item[0].SubItems.text:='rrr';comment faire pour ecrire dans les au IndexOf d'une ListView et sauvegarde des icônes [ par ActiveX ] Y a t'il quelq'un qui a déjà utilisé l'indexOf d'une Listview.je veux faire un indexof avec un string dans un Listviewvar i: Integer;   begin   i := L listview [ par skiso ] svpje veut savoir comment je peut ecrire dans un listview dans les cases je sais que pour la premier il faut ecrire :listview1.Items.Item[0].SubItems. listview.clear tres lent [ par loursonwinny ] Bonjour,J'ai un petit souci avec le TListView. Lorsque je rajoute 10000 items, j'obtiens un temp d'éxécution tout a fait satisfaisant. Mais lorsque je Comment incrementer la position d'un Listview ? [ par vieuxpere ] Bonjour, je n'arrive pas à incrémenter la postion d'un lisview. Pour ce faire, j'utilise le code suivant : ListView1.ItemIndex:=ListView1.ItemIndex+ Question compliquée : Comment simuler un clic sur une selection en cours dans un Listview [ par vieuxpere ] Bonjour,Je selectionne des items dans mon listView et j'accompli le code suivant :// Supprime l'ensemble des messages selectionnéswith ListView1 do fo ListView bloque trop d'items [ par L_art_ment ] Bonjour, bonjour J'ai une petit question à vous demander, je pense que la réponse n'est pas compliquée mais je ne parvient pas à la trouver de moi mêm RowSelect dans un ListView [ par hainlesgens ] Bonjours à tous, c'est encore moi et mes problèmes de pas doué je voudrais savoir si il est possible de gardé la valeur de la ligne sélectionné dans u ListView SubItem ... index out of bound [ par Golderack ] Bonjour j'ai un petit problème avec le composant ListView. Je dois parcourir des éléments dans le ListView. Pour les trois première colonne ca marche ComboBox associer une valeur à une ligne [ par dimdidi ] Bonjour,Je voudrais dans une ComboBox pouvoir associé une valeur en fonction de la ligne selectionnéeex : Base de donneeID -> Valeur5 -> Toto10 -> Tat


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.