Página 1 de 1

TBrowseMod lShowCellSelected

Publicado: Mar Oct 11, 2022 8:54 pm
por xhermita
Sigo "peleandome" con TBrowseMod :D

No conseguía que al ponerse en edición una celda el contenido apareciera seleccionado.
Imagen

Me repase los samples y si lo hacía, así que me puse a ver qué diferencia tenía entre mi browse y el del sample y encontré la propiedad lShowCellSelected a .T. en el samples y a .F. en mi proyecto,

Según la ayuda
Si verdadero muestra la celda seleccionada en vez de la fila completa.

No parecía ser la causa pero cambie esa propiedad y efectivamente, ahora aparecía seleccionado al entrar en edición.
Imagen

Pero ahora al picar en cualquier otra celda cuando se está editando una me aparece este error.

Código: Seleccionar todo

***************************** Registro de errores *****************************

             Exe: C:\xDesarrollos\Programas\AVF_Office\AVFOffice.exe
         Version: 1.2.4.0
       User name: PMATS
   Computer name: SRV2PC
           Fecha: 11-10-2022
            Hora: 19:49:50
   Memoria libre: 1687724
     Area actual: 1

------------------------- Información del compilador --------------------------

  Versión Xailer: Xailer 8.0.1
      Compilador: Harbour 3.2.0dev (r1912031042)
Compilador C/C++: MinGW GNU C 7.3 (32-bit)
      Plataforma: Windows 7 6.1 SP1

----------------------- Información detallada del error -----------------------

      Subsistema: BASE
 Código de error: 1005
          Estado: .F.
     Descripción: Message not found
       Operación: TBrwColMod:_VALUE
      Argumentos:  [ 1] = Tipo: O Valor: 
         Fichero: 
 Código error SO: 0

Pila de llamadas:
  __ERRRT_SBASE (0)
  TBRWCOLMOD:ERROR (0)
  (b)HBOBJECT (0)
  TBRWCOLMOD:MSGNOTFOUND (0)
  TBRWCOLMOD:_VALUE (0)
  TBROWSEMOD:SAVE (1874)
  TBROWSEMOD:CANCELEDIT (1838)
  TBRWMODGRID:WMLBUTTONDOWN (3875)
  RUNFORM (0)
  TAPPLICATION:RUN (289)
  MAIN (16)***************************** Registro de errores *****************************

             Exe: C:\xDesarrollos\Programas\AVF_Office\AVFOffice.exe
         Version: 1.2.4.0
       User name: PMATS
   Computer name: SRV2PC
           Fecha: 11-10-2022
            Hora: 19:49:50
   Memoria libre: 1687724
     Area actual: 1

------------------------- Información del compilador --------------------------

  Versión Xailer: Xailer 8.0.1
      Compilador: Harbour 3.2.0dev (r1912031042)
Compilador C/C++: MinGW GNU C 7.3 (32-bit)
      Plataforma: Windows 7 6.1 SP1

----------------------- Información detallada del error -----------------------

      Subsistema: BASE
 Código de error: 1005
          Estado: .F.
     Descripción: Message not found
       Operación: TBrwColMod:_VALUE
      Argumentos:  [ 1] = Tipo: O Valor: 
         Fichero: 
 Código error SO: 0

Pila de llamadas:
  __ERRRT_SBASE (0)
  TBRWCOLMOD:ERROR (0)
  (b)HBOBJECT (0)
  TBRWCOLMOD:MSGNOTFOUND (0)
  TBRWCOLMOD:_VALUE (0)
  TBROWSEMOD:SAVE (1874)
  TBROWSEMOD:CANCELEDIT (1838)
  TBRWMODGRID:WMLBUTTONDOWN (3875)
  RUNFORM (0)
  TAPPLICATION:RUN (289)
  MAIN (16)
He comprobado que en el samples ocurre lo mismo.

Si cancelo la edición con [ESC] no da ningún error y si confirmo la edición también me da el error.

También me he dado cuenta que con lShowCellSelected a .F. al hacer doble click en cualquier celda de una fila las seleccionaba toda y me ponía en edición la celda que correspondía con la única columna que tenía habilitada la edición.

Si pongo la propiedad a .T., al hacer doble click me selecciona solo la celda donde pico y no pone en edición la otra, si hago doble click en la celda que es editable la pone en edición.

Pero desde que pique en otra celda aparece el error de arriba.

Por si sirve de pista, el error lo da después de ejecutar el método OnSaveCol que es el que estoy utilizando para comprobar lo teclado.

Re: TBrowseMod lShowCellSelected

Publicado: Jue Oct 13, 2022 2:49 pm
por ignacio
Buenos días,

lo siento, pero no lo entiendo. Dígame exactamente con qué ejemplo se produce el error e intento reproducirlo.

No obstante, viendo el error que reporta:
Descripción: Message not found
Operación: TBrwColMod:_VALUE
....
TBROWSEMOD:SAVE (1874)
Da la sensación de que se ha modificado el valor de oCol:oGridEdit por oCol desde el método OnSaveCol(), ya que oCol NO TIENE la propiedad 'Value', que sin embargo si tiene oCol:oGridEdit. He revisado el código y tanto para edición múltiple, como para edición simple, no parece que se produzca ese error de asignación:

Código: Seleccionar todo

   IF ::oEditCol == NIL
      FOR EACH oCol IN ::aCols
         xValue := oCol:oGridEdit:SaveValue()
         ::OnSaveCol( oCol, @xValue )
         oCol:oGridEdit:Value := xValue   <<<<<<<<<<<<<<<<Aquí se produce su error
      NEXT
   ELSE
      oCol   := ::oEditCol
      xValue := oCol:oGridEdit:SaveValue()
      ::OnSaveCol( oCol, @xValue )
      oCol:oGridEdit:Value := xValue  <<<<<<<<<<<<<<<<Aquí se produce su error
   ENDIF
Revise su código en el evento OnSaveCol()

Un saludo

Nota: En cualquier caso, es absolutamente normal que el comportamiento con lShowSelected a .T. sea distinto en la edición por doble-click o intro.

Re: TBrowseMod lShowCellSelected

Publicado: Jue Oct 13, 2022 11:01 pm
por xhermita
Lo he probado con el samples ArrayBrowse de la carpeta Modern\Browses, le adjunto el zip.

Si habilitamos la propiedad lShowCellSelected a .T. al salir de la edición de la celda se produce el error, en caso de que este a .F. no pasa

Re: TBrowseMod lShowCellSelected

Publicado: Vie Oct 14, 2022 2:48 pm
por ignacio
Aquí no falla.

Re: TBrowseMod lShowCellSelected

Publicado: Jue Oct 20, 2022 8:42 pm
por xhermita
Sigo adaptándome al TBrowseMod y me he dado cuenta de un curioso efecto que me ocurre algunas veces si hacemos doble clic en una celda editable ...

Imagen

.. aparece el control de edición en la última fila que estuviera seleccionada, pero se selecciona la fila correcta y el valor a editar es correcto, y si lo acepto me actualiza correctamente la fila.

Si primero hacemos clic y una vez seleccionada la fila hacemos doble clic no se produce, solo acurre al hacer doble clic directamente.

No lo hace siempre, pero bastante a menudo.

Re: TBrowseMod lShowCellSelected

Publicado: Jue Oct 20, 2022 9:40 pm
por ignacio
Ponga un logdebug() a modo de traza en el evento OnSaveCol() para saber si el comportamiento es el que usted espera. Si detecta un error claro, nos dice como reproducirlo con cualquier ejemplo de Xailer. Gracias