Page 1 of 1

Linux y Wine, problema al cerrar ventanas

PostPosted: Sun Feb 14, 2010 7:37 pm
by alvaro533
Hola a todos.

Estoy ejecutando programas hechos con FWH en linux (ubuntu), mediante Wine. La verdad es que funciona muy bien. Me dado cuenta que si se usan ventanas MDI, a veces las dibuja fuera de la pantalla y no se ven. Lo mismo ocurre con las MDIChild. Lo he solucionado añadiendo estas líneas antes de activar la ventana.
Code: Select all  Expand view

oWnd:SetCoors( TRect():New( 20 , 20 , 750, 1000 ) )
 


Ahora tengo otro problema. Abro una ventana child y en ella dibujo un xbrowse. Cuando cierro la ventana, me interesa que se cierre la base de datos del browse. Lo hago de este modo

Code: Select all  Expand view

   DEFINE window vv:oWnd2 mdichild of oWnd title "titulo" icon icon1
   vv:oBrw := TXBrowse():New( vv:oWnd2 )
....etc.
    Activate window vv:oWnd2 valid  salir(vv)
return nil

// ------------------------------------------------------- //
static function salir(vv)
(vv:cAlias)->( dbclosearea() )
return .t.
 


Pues bien, esto da un error :
Error description: Error DBCMD/2001 Workarea not in use: ORDKEYCOUNT

El error es debido a que windows intenta repintar el browse una vez que ya he cerrado la base de datos. Esto lo soluciono añadiendo estas líneas antes de cerrar la base de datos:

Code: Select all  Expand view

vv:oBrw:setfocus()
vv:oBrw:cAlias:=""
 


Esto en "windows" como digo, funciona bien, pero en Wine me sigue dando el error de "Workarea not in use"

¿A alguien le ha pasado lo mismo? ¿Tiene solución?

Muchas gracias.

Alvaro

Re: Linux y Wine, problema al cerrar ventanas

PostPosted: Sun Feb 14, 2010 8:32 pm
by Antonio Linares
Alvaro,

Has probado a invertir esas lineas ?
Code: Select all  Expand view

vv:oBrw:cAlias:=""
vv:oBrw:setfocus()
 

Re: Linux y Wine, problema al cerrar ventanas

PostPosted: Sun Feb 14, 2010 9:33 pm
by alvaro533
Hola Antonio.

Gracias por contestar. Acabo de probar lo que dices. Da el mismo error.

Alvaro

Re: Linux y Wine, problema al cerrar ventanas

PostPosted: Mon Feb 15, 2010 10:08 am
by alvaro533
He conseguido hacer que funcione, aunque me gustaría conseguir la solución con menos líneas y sin necesidad de abrir otra ventana mdichild.
Alvaro

Code: Select all  Expand view

//----------------------------------------------------------------------------//
   DEFINE window vv:oWnd2 mdichild  of oWnd title "titulo"  icon icon1
   vv:oBrw := TXBrowse():New( vv:oWnd2 )
....etc.
    Activate window vv:oWnd2 valid  salir(vv)
return nil

//----------------------------------------------------------------------------//
static function salir(vv)
local oWnd3
local otimer

DEFINE window oWnd3 mdichild of oWnd title "Cerrando"
DEFINE TIMER otimer INTERVAL 100 ACTION ownd3:end() OF ownd3
ACTIVATE TIMER otimer
   oWnd3:SetCoors( TRect():New( 50 , 50 , 2, 2 ) )
Activate window oWnd3  valid salir2(vv,otimer)

return .t.

//----------------------------------------------------------------------------//
static function salir2(vv,otimer)

RELEASE TIMER otimer
(vv:cAlias)->( dbclosearea() )
... etc (otras líneas de tareas al cerrar)

return .t.
 

Re: Linux y Wine, problema al cerrar ventanas

PostPosted: Thu Mar 11, 2010 10:11 pm
by alvaro533
He visto que hay una nueva data bPostEnd en TMdiChild. ¿Soluciona este problema? ¿Cómo está hecho?

Un saludo,

Alvaro

Re: Linux y Wine, problema al cerrar ventanas

PostPosted: Thu Mar 11, 2010 10:27 pm
by Antonio Linares
Alvaro,

Code: Select all  Expand view

METHOD End() CLASS TMdiChild

   ...

   if ValType( ::bPostEnd ) == 'B'
      Eval( ::bPostEnd )
   endif

return lEnd
 

Pruébalo por si te solucionase el problema

Re: Linux y Wine, problema al cerrar ventanas

PostPosted: Fri Mar 12, 2010 10:52 am
by alvaro533
Si funciona, muchas gracias.

Alvaro

Re: Linux y Wine, problema al cerrar ventanas

PostPosted: Fri Mar 12, 2010 11:20 am
by Antonio Linares
bien! :-)

Re: Linux y Wine, problema al cerrar ventanas

PostPosted: Fri Mar 12, 2010 4:35 pm
by alvaro533
Hay que añadir " .and. lEnd " por si acaso bValid devuelve falso.

Code: Select all  Expand view

if ValType( ::bPostEnd ) == 'B' .and. lEnd
      Eval( ::bPostEnd )
endif
 


Muchas gracias, ahora las ventanas cierran perfectamente en linux con wine.

Un saludo,

Alvaro

Re: Linux y Wine, problema al cerrar ventanas

PostPosted: Fri Mar 12, 2010 8:21 pm
by Antonio Linares
Alvaro,

Incorporamos tu cambio para la próxima versión, gracias :-)