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