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 con tTreeViewMod

Foro de Xailer profesional en español
Responder
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Error con tTreeViewMod

Mensaje por bingen »

Buenas Ignacio, estoy cambiado un Tree clásico a moderno y venga a darme error.

Si tomas tu propio sample de TreeViewMod y cargas una carpeta de archivos o creas el form2 con varios elementos, verás que solo con hacer click sobre el nombre de cualquiera de los item da este error. También si te mueves arriba y abajo con el teclado.
Error tTreeViewMod.png
Error tTreeViewMod.png (26.42 KiB) Visto 345 veces
Gracias.
BiSoft Desarrollo de software profesional
http://www.bisoft.es
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9252
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Error con tTreeViewMod

Mensaje por ignacio »

Hola,

Adjunto correción. Un saludo.

Código: Seleccionar todo

METHOD SetIndex( nValue, lDel ) CLASS XListBoxMod

   LOCAL nPos, nLen
   LOCAL lRet, lChangeSel := .f.

   DEFAULT lDel TO .T., nValue TO ::FnIndex

   nLen := ::RecCount()

   IF lDel
      ::FaSelected := {}
      lChangeSel := .t.
   ENDIF

   IF nValue > 0 .AND. nValue <= nLen
      IF nValue != ::FnIndex
         lRet := ::OnChange( ::FnIndex, @nValue )
      ENDIF
      IF lRet == NIL .OR. lRet
         ::FnIndex := nValue
         ::FcText  := ::ItemText( nValue ) <<<<<<<<<<<<<<<<<<<<<<<<<<<< CAMBIO REALIZADO
         ::cSeek   := ""
         ::lFound  := .F.
         ::AddSelected( nValue )
         lChangeSel := .f. // Event triggered at AddSelected()
         nPos := ::nItemHeight * ( nValue - 1 )
         IF nPos < -::nClientTop
            ::nClientTop := -nPos
         ELSEIF ( nPos + ::nItemHeight ) > ( ::nClientHeight - ::nClientTop )
            ::nClientTop := ::nClientHeight - nPos - ::nItemHeight
         ENDIF
         ::OnChanged()
         ::Refresh()
      ENDIF
   ELSEIF nLen == 0
      ::FnIndex := 0
      lChangeSel := .f.
      ::Refresh()
   ENDIF

   IF lChangeSel
      ::OnChangeSelected( ::FaSelected )
   ENDIF

RETURN ::FnIndex
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder