Listbox

Hola, quisiera saber como puedo hacer para que al seleccionar un elemento de un listbox lo pueda hacer subir o bajar una posición al pinchar sobre el botón de subir o de bajar. Gracias
1

1 Respuesta

23.275 pts.
Más o menos seria así:
**Para el boton de bajar
procedure TForma.BitBtn2Click(Sender: TObject);
Var
Nombre : String;
Valor : Byte;
begin
Nombre := ListBox2.Items[ListBox2.ItemIndex];
Valor := ListBox2.ItemIndex;
ListBox2.MultiSelect := True;
ListBox2.Selected[Valor] := False;
ListBox2.Items.Delete(ListBox2.ItemIndex);
ListBox2.Items.Insert(Valor+1,Nombre);
ListBox2.ItemIndex := Valor+1;
ListBox2.Selected[ListBox2.ItemIndex] := True;
ListBox2.MultiSelect := False;
if ListBox2.ItemIndex = ListBox2.Items.Count-1 Then
BitBtn2.Enabled := False
Else
BitBtn2.Enabled := True;
BitBtn1.Enabled:=True;
End;
Para el botón de subir solo es +1 en lugar de -1
¿Se podría hacer lo de antes con el procedimiento move?, es para ver si puedo ahorrar código.
No veo que te ahorres mucho código pero bueno:
Esto es para el botón de subir.
procedure TForm1.Button1Click(Sender: TObject);
Var Posic:Byte;
begin
Posic:=ListBox1.ItemIndex;
If Posic=0 Then Begin
ListBox1.Items.Move(0, ListBox1.Items.Count - 1);
ListBox1.ItemIndex:=0;
End
Else Begin
ListBox1.Items.Move(Posic, Posic-1);
ListBox1.ItemIndex:=Posic-1;
End;
end;
Como ves, si le agregamos las lineas de activar y desactivor botones o el de multiselección, pues queda casi igual, pero lineas menos son bites ahorados.
Te ahorrarías más lineas si hicieras un componente que tuviera métodos de LineUp y LineDown, o tal vez usando macros para usar solo un procedimiento para las dos funciones ... no se.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas