KINETIC SCROLL - problema al cerrar dialog (SOLUCIONADO)

KINETIC SCROLL - problema al cerrar dialog (SOLUCIONADO)

Postby rolitocere » 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: Select all  Expand view
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: Select all  Expand view
valid (oBrw:lKinetic:=.F. , oDbf:close() , .t.)


Pero sigue dando el error.

¿Alguna idea sobre como solucionarlo?. Gracias

Rolis
Last edited by rolitocere on Sat May 22, 2010 12:47 pm, edited 1 time in total.
rolitocere
 
Posts: 41
Joined: Wed Sep 23, 2009 11:50 am

Re: KINETIC SCROLL - problema al cerrar dialog

Postby ermatica » Fri May 21, 2010 1: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: Select all  Expand view
oBrw:cAlias:=nil


Espero te sirva...

Un saludo,
Ernesto
ermatica
 
Posts: 44
Joined: Mon Nov 12, 2007 1:50 pm
Location: España

Re: KINETIC SCROLL - problema al cerrar dialog

Postby rolitocere » Fri May 21, 2010 2: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: Select all  Expand view
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.
rolitocere
 
Posts: 41
Joined: Wed Sep 23, 2009 11:50 am

Re: KINETIC SCROLL - problema al cerrar dialog

Postby ermatica » Fri May 21, 2010 2:45 pm

Hola Rolis,

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

Code: Select all  Expand view

   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: Select all  Expand view

   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
ermatica
 
Posts: 44
Joined: Mon Nov 12, 2007 1:50 pm
Location: España

Re: KINETIC SCROLL - problema al cerrar dialog

Postby rolitocere » Fri May 21, 2010 4: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: Select all  Expand view
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.
rolitocere
 
Posts: 41
Joined: Wed Sep 23, 2009 11:50 am

Re: KINETIC SCROLL - problema al cerrar dialog

Postby Antonio Linares » Fri May 21, 2010 6:40 pm

Rolis,

Prueba asi:
Code: Select all  Expand view

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
User avatar
Antonio Linares
Site Admin
 
Posts: 41418
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: KINETIC SCROLL - problema al cerrar dialog

Postby rolitocere » Fri May 21, 2010 7: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: Select all  Expand view

valid ( oBrw:cAlias := nil, oBrw:lKinetic:=.F., oDbf:Close(), .t. )
 

Incluso puedes probar a quitar el oBrw:lKinetic := .F. de esa línea
rolitocere
 
Posts: 41
Joined: Wed Sep 23, 2009 11:50 am

Re: KINETIC SCROLL - problema al cerrar dialog

Postby Antonio Linares » Fri May 21, 2010 7: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
User avatar
Antonio Linares
Site Admin
 
Posts: 41418
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: KINETIC SCROLL - problema al cerrar dialog

Postby rolitocere » Fri May 21, 2010 9: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: Select all  Expand view
METHOD KeyNo()             INLINE ( ::nArea )->( OrdKeyNo() )


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


Saludos. Rolis.
rolitocere
 
Posts: 41
Joined: Wed Sep 23, 2009 11:50 am

Re: KINETIC SCROLL - problema al cerrar dialog

Postby Antonio Linares » Sat May 22, 2010 2:41 am

Rolis,

De igual forma haz:

oBrw:bKeyNo := { || 0 }
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41418
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: KINETIC SCROLL - problema al cerrar dialog

Postby rolitocere » 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: Select all  Expand view
Function CloseoDbfxBro(oBrw,oDbf)

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

Return nil


Y ahora para cerrar la oDbf hago así:

Code: Select all  Expand view
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.
rolitocere
 
Posts: 41
Joined: Wed Sep 23, 2009 11:50 am

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

Postby Antonio Linares » Sat May 22, 2010 1:26 pm

Rolis,

Bien, me alegro que esté solucionado.

Esta es una mejora muy simple pero te ahorra algo de código :-)
Code: Select all  Expand view

Function CloseoDbfxBro( oBrw, oDbf )

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

Return .T.
 

Code: Select all  Expand view

valid CloseoDbfxBro( oBrw, oDbf )
 
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41418
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 22 guests