Ver Mensaje Individual
  #7  
Antiguo 03-11-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Reputación: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No has respondido a lo que te pregunto, pero, en todo caso, a bote pronto me sale algo como lo siguiente. Puedes adaptarlo a tu gusto. Son bienvenidas todas las rectificaciones que sean menester.

Código Delphi [-]
function MoverElementoListBox(listBox: TCustomListBox;
          moverElementoHaciaArriba: boolean) : boolean;
var
  textoElemento: string;
  indiceActual: integer;
  indicePosterior: integer;
begin
  if not Assigned(listBox) then
    raise Exception.Create('Es necesario un objeto TCustomListBox válido');

  indiceActual := listBox.ItemIndex;
  if(indiceActual = -1) then
  begin
    Result := false;
    Exit;
  end;

  if moverElementoHaciaArriba then
    indicePosterior := indiceActual-1
  else
    indicePosterior := indiceActual+1;

  if (indicePosterior = -1)
   or (indicePosterior > listBox.Count-1) then
  begin
    Result := false;
    Exit;
  end;

  listBox.ItemIndex := indicePosterior;
  textoElemento := listBox.Items[indicePosterior];
  listBox.Items[indicePosterior] := listBox.Items[indiceActual];
  listBox.Items[indiceActual] := textoElemento;

  Result := true;
end;

// Ejemplo de uso para mover un elemento hacia arriba
MoverElementoListBox(lbElementos, true);

// Ejemplo de uso para mover un elemento hacia abajo
MoverElementoListBox(lbElementos, false);

// "lbElementos" es un componente del tipo "TListBox"
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-11-2006 a las 21:12:23.
Responder Con Cita