ListBox rotativo
Publicado: Lun May 14, 2007 11:56 pm
Quiero que en un ListBox, cuando pulse cursor arriba, si esta en el primero,
se vaya al ultimo elemento y si esta en el ultimo, vaya al primero.
Lo pruebo con algo asi:
//---------------------------------------------------------- ----------------
----
METHOD Listbox1KeyDown( oSender, nKey, nFlags ) CLASS TForm1
LOCAL nOpciones := Len(::oListbox1:aItems)
LOCAL nOpcActual:= ::oListbox1:nIndex
DO CASE
CASE nKey = 38 // Arriba
if nOpcActual = 1
::oListbox1:nIndex := nOpciones
endif
CASE nKey = 40 // Abajo
if nOpcActual = nOpciones
::oListbox1:nIndex := 1
endif
ENDCASE
RETURN Nil
//---------------------------------------------------------- ----------------
----
pero esto me posiciona en el segundo y penultimo respectivamente.
Es como si se colocara y luego, ademas , ejecutara la accion de movimiento
correspondiente.
¿Alguien sabe como resolverlo?
se vaya al ultimo elemento y si esta en el ultimo, vaya al primero.
Lo pruebo con algo asi:
//---------------------------------------------------------- ----------------
----
METHOD Listbox1KeyDown( oSender, nKey, nFlags ) CLASS TForm1
LOCAL nOpciones := Len(::oListbox1:aItems)
LOCAL nOpcActual:= ::oListbox1:nIndex
DO CASE
CASE nKey = 38 // Arriba
if nOpcActual = 1
::oListbox1:nIndex := nOpciones
endif
CASE nKey = 40 // Abajo
if nOpcActual = nOpciones
::oListbox1:nIndex := 1
endif
ENDCASE
RETURN Nil
//---------------------------------------------------------- ----------------
----
pero esto me posiciona en el segundo y penultimo respectivamente.
Es como si se colocara y luego, ademas , ejecutara la accion de movimiento
correspondiente.
¿Alguien sabe como resolverlo?