Page 1 of 1

problemas con xBrowse: NO FUNCIONA oBrw:VGoBottom() [solucio

Posted: Tue Jun 09, 2020 8:36 am
by MOISES
Buenos días Antonio,

Para acabar de solucionar el problema de xBrowse y SQLRDD, dado que Nages no contesta a los mensajes, necesito poder mover la barra de scroll vertical.

Sin embargo, oBrw:VGoBottom() ni SendMsg( VK_DOWN ) funcionan. No hacen nada.

Aquí va un ejemplo.

Code: Select all

#Include "FiveWin.Ch"
#include "xbrowse.ch"

#include "hbcompat.ch"



FUNCTION Main()

   use c:\fwh\samples\customer

   TESTBROWSE()

   dbcloseall()


   quit


return nil





function TESTBROWSE()

   local oDlg
   local oBrw

   define dialog oDlg title "Test xBrowse " + cvaltochar(datetime()) from 0,0 to 24,79


    @ 0,0 xbrowse oBrw datasource alias() of oDlg fastedit autocols autosort ;
    SIZE -1, -1 PIXEL

    oBrw:nRowHeight := 25


    oBrw:lAutoappend := .t.
    oBrw:CreateFromCode()


    activate dialog oDlg centered ;
             on init ( oBrw:VGoBottom(), oBrw:oVScroll:SendMsg( VK_DOWN ) )

return nil
 
Te agradecería por favor tu ayuda, dado que llevo con este problema desde diciembre y los clientes están sumamente cabreados.

Muchas gracias. Un saludo

Re: problemas con xBrowse: NO FUNCIONA oBrw:VGoBottom()

Posted: Tue Jun 09, 2020 11:30 am
by acuellar
Estimado Moises

Si la idea es enviar al último registro yo uso GoBottom() y nunca he visto VGoBottom()

Re: problemas con xBrowse: NO FUNCIONA oBrw:VGoBottom()

Posted: Tue Jun 09, 2020 12:57 pm
by MOISES
Muchas gracias por tu respuesta.

El problema es que con SQLRRD, al hacer dbgobottom() no baja la barra de scroll, ni tampoco funciona el método para forzarlo, ni sendmsg.

Re: problemas con xBrowse: NO FUNCIONA oBrw:VGoBottom()

Posted: Thu Jun 11, 2020 12:12 pm
by MOISES
Gracias a la ayuda de Cristóbal, este es el fix:

Code: Select all


METHOD KeyCount() CLASS TXBrowse

   TRY
      if Empty( ::aFilter )
         ::nLen   := Eval( ::bKeyCount )
      else
         ::nLen   := Len( ::aFilter )
      endif
      ::lClosed   := .f.

   CATCH
      ::nLen      := 0
      ::lClosed   := .t.
   END


   if ::oVScroll != nil
      ::VSetRange( 1, ::nLen )

      if !::lSqlRDD
        ::VUpdatePos()
      endif
   endif

return ::nLen