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
--
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.
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
-
- Mensajes: 3
- Registrado: Jue May 02, 2013 10:34 am
Error en el método ModifyItem de la clase TListBox
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
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
-
- Mensajes: 3
- Registrado: Jue May 02, 2013 10:34 am
Error en el método ModifyItem de la clase TListBox
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
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