FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour KINETIC SCROLL - problema al cerrar dialog (SOLUCIONADO)
Posts: 41
Joined: Wed Sep 23, 2009 11:50 AM

KINETIC SCROLL - problema al cerrar dialog (SOLUCIONADO)

Posted: Thu May 20, 2010 11:25 PM
Hola

Es muy bonito el KINETIC SCROLL pero me da un problema.

Si mientras el scroll se esta ejecutando, se cierra el dialog en el que está el xBrowse, la aplicación se cierra indicando un error porque tengo la costumbre de cerrar la DBF cuando cierro el dialog así:

Code (fw): Select all Collapse
valid (oDbf:close() , .t.)


Obviamente, si no cierro la DBF el error desaparece pero la cuestión es que todo el sistema que acabo de pasar a la nueva xBrowse está hecho para funcionar así, cerrando las DBF al cerrar los dialogs y esto, sin usar el KINETIC SCROLL no ocasiona ningún problema.

Ya probé colocando la línea así:

Code (fw): Select all Collapse
valid (oBrw:lKinetic:=.F. , oDbf:close() , .t.)


Pero sigue dando el error.

¿Alguna idea sobre como solucionarlo?. Gracias

Rolis
Posts: 44
Joined: Mon Nov 12, 2007 01:50 PM

Re: KINETIC SCROLL - problema al cerrar dialog

Posted: Fri May 21, 2010 01:15 PM
Hola Rolis,

Deberías poner algo del código o del error que te dá para saber más exactamente donde tienes el problema.

De todas formas por lo que indicas prueba a poner antes de cerrar la DBF del xbrowse lo siguiente:
Code (fw): Select all Collapse
oBrw:cAlias:=nil


Espero te sirva...

Un saludo,
Ernesto
Posts: 41
Joined: Wed Sep 23, 2009 11:50 AM

Re: KINETIC SCROLL - problema al cerrar dialog

Posted: Fri May 21, 2010 02:07 PM
Ernesto,

Probé como sugieres pero sigue el error.

Copio el error abajo pero la falla está, creo yo, porque se queda sin la DBF para seguir "hojeando" con el kinetic.

Code (fw): Select all Collapse
Application
===========
   
   Size: 2,888,704 bytes
   Time from start: 0 hours 0 mins 10 secs 
   Error occurred at: 21/05/2010, 10:54:57
   Error description: Error DBCMD/2001  Area de trabajo no usada: ORDKEYCOUNT
   Args:

Stack Calls
===========
   Called from:  => ORDKEYCOUNT(0)
   Called from: D:\FWH10.4\SOURCE\CLASSES\DATABASE.PRG => (b)TDATABASE:TDATABASE(161)
   Called from:  => TDATABASE:KEYCOUNT(0)
   Called from: D:\FWH10.4\SOURCE\CLASSES\DATABASE.PRG => (b)TDATABASE:SETXBROWSE(986)
   Called from: D:\SISTEMA\PRG\xbrowse4-10.prg => (b)TXBROWSE:TXBROWSE(380)
   Called from:  => TXBROWSE:KEYCOUNT(0)
   Called from: D:\SISTEMA\PRG\xbrowse4-10.prg => TXBROWSE:REFRESH(1127)
   Called from: D:\SISTEMA\PRG\xbrowse4-10.prg => TXBROWSE:LBUTTONUP(3187)
   Called from:  => TWINDOW:HANDLEEVENT(0)
   Called from: D:\FWH10.4\SOURCE\CLASSES\CONTROL.PRG => TCONTROL:HANDLEEVENT(1483)
   Called from: D:\SISTEMA\PRG\xbrowse4-10.prg => TXBROWSE:HANDLEEVENT(10746)
   Called from: D:\FWH10.4\SOURCE\CLASSES\WINDOW.PRG => _FWH(3394)
   Called from:  => WINRUN(0)
   Called from: D:\FWH10.4\SOURCE\CLASSES\WINDOW.PRG => TWINDOW:ACTIVATE(979)
   Called from: D:\SISTEMA\PRG\fwso.prg => PRIMERA(1050)


Aclaro que uso "xbrowse4-10.prg" porque, en la versión más vieja de FWH que usaba antes tenía una pequeña modificación hecha por mí y, para compatibilizar la llamada a esa modificación es que le agregué algunas líneas para evitar cambiar todo el código de los PRG's míos. En realidad son datas que no se usan para nada en la nueva xBrowse y obviamente no influyen en esta cuestión ya que sólo las declaro.

Voy a seguir investigando como solucionarlo. Cualquier ayuda será bienvenida.

Gracias. Rolis.
Posts: 44
Joined: Mon Nov 12, 2007 01:50 PM

Re: KINETIC SCROLL - problema al cerrar dialog

Posted: Fri May 21, 2010 02:45 PM
Hola Rolis,

Si no utilizas KINETIC SCROLL desactivalo en la creación del xbrw:

Code (fw): Select all Collapse
   oxbrw := TXBrowse():New( oDlg )
   oxbrw :lKinetic:=.f.  //--------------------->poner OFF
   oxbrw :CreateFromResource(500)
   ...


Y por otra parte no se si utilizas entorno MDI, yo lo hago así:
Code (fw): Select all Collapse
   DEFINE WINDOW oWndChilds[nWnd] MDICHILD OF oWnd ICON oIcon TITLE "Titulo"
   DEFINE DIALOG oDlg NAME "Nombre_Recurso" OF oWndChilds[nWnd] 
   ...
   ACTIVATE DIALOG oDlg NOWAIT  ON INIT (   Funcion_la_quesea()  )  VALID (oWndChilds[nWnd]:End() )
   ACTIVATE WINDOW oWndChilds[nWnd]  ON INIT ( Funcion_laquesea() )  VALID ( FClose_DBF(nWnd,oWnd,oWndChilds,oBROW,cAlias) ,.T. )

  Function FCLOSE_DBF(nWnd,oWnd,oWndChilds,oBROW,cAlias)
     oBRW:cAlias:=nil
    (cAlias)->(DBCLOSEAREA())
   oWndChilds[nWnd]:=nil
 Return



Un saludo
Ernesto
Posts: 41
Joined: Wed Sep 23, 2009 11:50 AM

Re: KINETIC SCROLL - problema al cerrar dialog

Posted: Fri May 21, 2010 04:42 PM
Ernesto,

Si desactivo el Kinetic no hace el problema pero el asunto es que el Kinetic es que es algo que quiero implementar.

Uso MDI y, de la forma que lo haces para cerrar las dbf es similar a como las cierro yo (en el valid), salvo que tu utilizas una función y yo la cierro directamente ya que uso la clase tDataBase y esta tiene su propia función para cerrar
Code (fw): Select all Collapse
valid (oDbf:close() , .t.)


Seguramente lo que hay que hacer para evitar este error, es algún "retoque" a la clase xBrowse, pero no encuentro como hacerlo.

Por eso puse este mensaje, con la esperanza de que Alguien le encuentre la vuelta.

Gracias. Rolis.
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: KINETIC SCROLL - problema al cerrar dialog

Posted: Fri May 21, 2010 06:40 PM
Rolis,

Prueba asi:
Code (fw): Select all Collapse
valid ( oBrw:cAlias := nil, oBrw:lKinetic:=.F., oDbf:Close(), .t. )

Incluso puedes probar a quitar el oBrw:lKinetic := .F. de esa línea
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 41
Joined: Wed Sep 23, 2009 11:50 AM

Re: KINETIC SCROLL - problema al cerrar dialog

Posted: Fri May 21, 2010 07:01 PM
Antonio,

Gracias por responder, ya había probado esas opciones (entre otras buscando dentro del prg de la clase) pero lamentablemente sigue haciendo la falla.

La verdad es que me trabé y no creo que haya algo que pueda hacer salvo desabilitar el kinetic (lástima porque es superútil en esta aplicación).

Rolis

Antonio Linares wrote:Rolis,

Prueba asi:
Code (fw): Select all Collapse
valid ( oBrw:cAlias := nil, oBrw:lKinetic:=.F., oDbf:Close(), .t. )

Incluso puedes probar a quitar el oBrw:lKinetic := .F. de esa línea
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: KINETIC SCROLL - problema al cerrar dialog

Posted: Fri May 21, 2010 07:56 PM

Rolis,

Como estás usando un objeto TDataBase prueba a hacer tambien:

oBrw:bKeyCount := { || 0 }

ya que es desde ese codeblock desde donde se está llamando al método KeyCount() que es el que da el error por estar la workarea ya cerrada

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 41
Joined: Wed Sep 23, 2009 11:50 AM

Re: KINETIC SCROLL - problema al cerrar dialog

Posted: Fri May 21, 2010 09:38 PM
Antonio,

Sigue dando error salvo que ahora el error indica a otra línea de la TDataBase.

Ahora marca error en esta línea de TDataBase
Code (fw): Select all Collapse
METHOD KeyNo()             INLINE ( ::nArea )->( OrdKeyNo() )


Antes marcaba a esta línea:
Code (fw): Select all Collapse
METHOD KeyCount()          INLINE ( ::nArea )->( OrdKeyCount() )


Saludos. Rolis.
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: KINETIC SCROLL - problema al cerrar dialog

Posted: Sat May 22, 2010 02:41 AM

Rolis,

De igual forma haz:

oBrw:bKeyNo := { || 0 }

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 41
Joined: Wed Sep 23, 2009 11:50 AM

Re: KINETIC SCROLL - problema al cerrar dialog

Posted: Sat May 22, 2010 12:44 PM
Perfecto Antonio, muchas gracias.

Lo que hice fue agregarle una función nueva a mi PRG con funciones mías así:

Code (fw): Select all Collapse
Function CloseoDbfxBro(oBrw,oDbf)

      oBrw:bKeyCount:={|| 0 }
      oBrw:bKeyNo:={|| 0 }
      oDbf:close()

Return nil


Y ahora para cerrar la oDbf hago así:

Code (fw): Select all Collapse
valid (CloseoDbfxBro(oBrw,oDbf), .t.)


Me interesé por modificar la clase Database para seguir usando oDbf:close(), pero me faltaría el objeto oBrw así que opté por la solución comentada antes.

De nuevo, Gracias. Rolis.
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: KINETIC SCROLL - problema al cerrar dialog (SOLUCIONADO)

Posted: Sat May 22, 2010 01:26 PM
Rolis,

Bien, me alegro que esté solucionado.

Esta es una mejora muy simple pero te ahorra algo de código :-)
Code (fw): Select all Collapse
Function CloseoDbfxBro( oBrw, oDbf )

      oBrw:bKeyCount := {|| 0 }
      oBrw:bKeyNo := {|| 0 }
      oDbf:Close()

Return .T.

Code (fw): Select all Collapse
valid CloseoDbfxBro( oBrw, oDbf )
regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion