Ver Mensaje Individual
  #2  
Antiguo 26-04-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Poco elegante parece, y es probable que exista otro modo, pero, a mí se me ocurre este a bote pronto, y lo expongo por si sirviera de algo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  nItem: TListItem;
begin
  { Nos proponemos con el siguiente código cambiar
    la posición del primer elemento de un "TListView".

    Queremos que en lugar del índice 0 dicho elemento
    pase a ocupar el índice 2 de la lista de marras.
  }

  // Vamos a insertar un nuevo Item en el índice 2
  nItem := ListView1.Items.Insert(2);

  { La propiedad Caption del nuevo Item la recogemos
    del Item que queremos "mover", y que, como luego
    se verá, en realidad no lo movemos tal cual, sino
    que lo copiamos, y luego lo borraremos.
  }
  nItem.Caption := ListView1.Items[0].Caption;

  { También nos interesan los "SubItems"..., así que
    nos hacemos con ello. Supongo que si nos intere-
    saran otros datos, como el "ImageIndex", no nos
    quedaría sino copiarlo también.
  }
  for i := 0 to ListView1.Items[0].SubItems.Count-1 do
    nItem.SubItems.Add(ListView1.Items[0].SubItems[i]);

  { Por último, borramos el Item que acabamos
    de copiar para volverlo a insertar (una
    copia) con distinto índice en la lista.
  }
  ListView1.Items[0].Delete;

end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita