Página 1 de 1

Extraño comportamiento en TBrowseMod

Publicado: Mar Feb 28, 2023 3:56 pm
por bingen
Buenas XTeam.

Cuando en un browse moderno tengo un filtro y estoy situado en el pero no escribo nada y pulso la tecla flecha abajo, me situo en la primera línea, lógico.
Pero si tecleo algo que busca un resultado de x líneas y pulso la tecla abajo se queda en el "limbo" y es una segunda flecha abajo la que me lleva a la primera línea.

Si en ese limbo pretendes hacer algo como
::oBrw:oDataGrid:aDisplayCols[1]:Value
Crash.....

Por cierto si luego subes arriba pasa al filtro y si bajas va a la primera línea del browse, pero la primera vez no.

Gracias.

Re: Extraño comportamiento en TBrowseMod

Publicado: Mar Feb 28, 2023 7:17 pm
por ignacio
Hola,

Posiblemente el problema sea el tiempo que necesita para hacer la búsqueda el motor de bares de datos.

Con TMemDataset no suele haber ese problema, pues el filtro se hace en memoria. Posiblemente haya que poner el reloj de arena mientras se ejecuta el filtro o incluso deshabilitar el browse. Lo miro

Saludos

Re: Extraño comportamiento en TBrowseMod

Publicado: Mié Mar 01, 2023 5:25 pm
por bingen
Lo siento pero no es el tiempo, ya ha buscado 3 registros de un centenar y está quietecito, pero pulso abajo y no pasa a la primera linea, si pulso de nuevo abajo sí.

Re: Extraño comportamiento en TBrowseMod Otra cosa más.

Publicado: Mié Mar 01, 2023 5:30 pm
por bingen
Por cierto, recuerdas lo que comentamos de buscar con acento y sin acento que ya lo resolviste incluso en mayúsculas/minúsculas y chapeau, pero me acabo de dar cuenta que con la Ñ solo busca si la Ñ está en minúscula o mayúscula tal y como la he escrito en el filtro. O sea Ñ no busca ñ ni viceversa.

Gracias

Re: Extraño comportamiento en TBrowseMod

Publicado: Mié Mar 01, 2023 5:35 pm
por ignacio
bingen escribió: Mié Mar 01, 2023 5:25 pm Lo siento pero no es el tiempo, ya ha buscado 3 registros de un centenar y está quietecito, pero pulso abajo y no pasa a la primera linea, si pulso de nuevo abajo sí.
Dime que ejemplo de BrowseMod puedo utilizar par ver el error. Gracias

Re: Extraño comportamiento en TBrowseMod Otra cosa más.

Publicado: Mié Mar 01, 2023 5:48 pm
por ignacio
bingen escribió: Mié Mar 01, 2023 5:30 pm Por cierto, recuerdas lo que comentamos de buscar con acento y sin acento que ya lo resolviste incluso en mayúsculas/minúsculas y chapeau, pero me acabo de dar cuenta que con la Ñ solo busca si la Ñ está en minúscula o mayúscula tal y como la he escrito en el filtro. O sea Ñ no busca ñ ni viceversa.

Gracias
Hecho. Incluido también 'ç'

Saludos

Re: Extraño comportamiento en TBrowseMod

Publicado: Mié Mar 01, 2023 5:51 pm
por ignacio
ignacio escribió: Mié Mar 01, 2023 5:35 pm
bingen escribió: Mié Mar 01, 2023 5:25 pm Lo siento pero no es el tiempo, ya ha buscado 3 registros de un centenar y está quietecito, pero pulso abajo y no pasa a la primera linea, si pulso de nuevo abajo sí.
Dime que ejemplo de BrowseMod puedo utilizar par ver el error. Gracias

Re: Extraño comportamiento en TBrowseMod

Publicado: Jue Mar 02, 2023 12:08 pm
por bingen
Hola Ignacio aquí tienes el ejemplo con un memdataset y fallando.

Pero ojo no busques algo que coincida con el de la primera línea que entonces si funciona.

Busca xsri y dale a la flecha abajo y verás que no va a la primera línea hasta que le vuelvas a dar abajo.

Solo falta que tu lo compiles y a ti si te vaya.

Gracias

Re: Extraño comportamiento en TBrowseMod

Publicado: Jue Mar 02, 2023 2:14 pm
por ignacio
Buenos días,

Prueba cambiando este método:

Código: Seleccionar todo

METHOD Filter( oCol ) CLASS xBrowseMod

   LOCAL nRecno
   
   IF ::oDataGrid == NIL
      RETURN nil
   ENDIF

   ::CancelEdit()
   ::OnFilterStart( oCol )

   IF ::nIndex > 0 .AND. ::nIndex <= Len( ::oDataGrid:aWork )
      nRecno := ::oDataGrid:aWork[ ::nIndex ]
   ENDIF

   IF ::RunFilter() .AND. !Empty( nRecno )
      nRecno := AScan( ::oDataGrid:aWork, nRecno )
      IF nRecno > 0
         ::nIndex := nRecno
      ELSE
         ::nIndex := 1
      ENDIF
   ENDIF

   ::OnFilterEnd( oCol )

   IF oCol != NIL
      IF ::lShowCellSelected
         ::nSelectCol := oCol:nPos
      ENDIF
   ENDIF

   ::oDataGrid:SetFocus()

RETURN NIL
Y me cuentas. Gracias.

Un saludo

Re: Extraño comportamiento en TBrowseMod

Publicado: Mié Mar 08, 2023 11:35 am
por bingen
Así como indicas el problema final desaparece pero a costa de perder una de las cosas más valiosas del filtro.

Pierdes el foco, es decir que aunque busque y te de un resultado, sigas en el filtro para seguir metiendo alguna letra más o cambiar una que has metido mal al ver que no da resultados, para dar al tabulador y meter otro filtro en otra columna, etc.

Lo siento, no me parece la solución ideal y no se si habrá otra. Lo curioso es que si no buscas o buscas algo que coincida con la primera linea del browse la tecla abajo funciona bien y si no pues se queda en el limbo.

Gracias

Re: Extraño comportamiento en TBrowseMod

Publicado: Mié Mar 08, 2023 2:30 pm
por ignacio
Pierdes el foco, es decir que aunque busque y te de un resultado, sigas en el filtro para seguir metiendo alguna letra más o cambiar una que has metido mal al ver que no da resultados, para dar al tabulador y meter otro filtro en otra columna, etc.
Ok Visto y corregido
Lo siento, no me parece la solución ideal y no se si habrá otra. Lo curioso es que si no buscas o buscas algo que coincida con la primera linea del browse la tecla abajo funciona bien y si no pues se queda en el limbo.
Parece que esto se contradice con lo dicho en el primer párrafo.

Saludos