In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Error en el método ModifyItem de la clase TListBox

Foro público de Xailer en español
Responder
jose-manuel-serrano
Mensajes: 3
Registrado: Jue May 02, 2013 10:34 am

Error en el método ModifyItem de la clase TListBox

Mensaje por jose-manuel-serrano »

Buenos dí­as
He detectado un error en el Método "ModifyItem" de la clase "TListBox"
Enví­o ejemplo.
Cuando modificas el penúltimo registro con "ModifyItem" lo coloca el
último. Es porque se borra dicho registro antes de insertarlo, y al
añadirlo de nuevo, el penúltimo lo coloca al final.
He corregido el Método y lo enví­o
Original de Xailer:
===================
IF ::DeleteItem( nPos )
::InsertItem( nPos, cItem )
IF nPos == ::FnIndex
::SendMsg( LB_SETCURSEL, nPos - 1 )
ENDIF
ELSE
lRet := .F.
ENDIF
Modificado:
===========
IF ::InsertItem( nPos, cItem )
IF nPos + 1 = ::GetCount()
::DeleteItem( nPos )
ELSE
::DeleteItem( nPos + 1 )
ENDIF
IF nPos == ::FnIndex
::SendMsg( LB_SETCURSEL, nPos - 1 )
ENDIF
ELSE
lRet := .F.
ENDIF
Saludos
José Manuel Serrano
ProSer Informática
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Error en el método ModifyItem de la clase TListBox

Mensaje por jfgimenez »

Jose Manuel,
gracias por el aviso. Pero lo que está mal no es el método ModifyItem(),
sino el método InsertItem(). Hay un >= que hay que cambiar por >, en la
lí­nea 268. El método InsertItem() quedarí­a así­:
METHOD InsertItem( nPos, cItem ) CLASS XListBox
LOCAL lRet := .T.
DEFAULT cItem TO "Listbox item"
IF nPos == Nil .OR. nPos > ::GetCount()
....
el resto, igual.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
jose-manuel-serrano
Mensajes: 3
Registrado: Jue May 02, 2013 10:34 am

Error en el método ModifyItem de la clase TListBox

Mensaje por jose-manuel-serrano »

Muchas gracias
Saludos
José Manuel Serrano
El 02/05/2013 11:04, Jose F. Gimenez escribió:
> Jose Manuel,
>
> gracias por el aviso. Pero lo que está mal no es el método ModifyItem(),
> sino el método InsertItem(). Hay un >= que hay que cambiar por >, en la
> lí­nea 268. El método InsertItem() quedarí­a así­:
>
> METHOD InsertItem( nPos, cItem ) CLASS XListBox
>
> LOCAL lRet := .T.
>
> DEFAULT cItem TO "Listbox item"
>
> IF nPos == Nil .OR. nPos > ::GetCount()
> ....
> el resto, igual.
>
>
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
> http://www.xailer.info
Responder