Ayuda Bug TFolderEx, por favor

Re: Ayuda Bug TFolderEx, por favor

Postby acuellar » Wed Oct 08, 2014 3:59 pm

Distinguidos

Porqué desde recursos definido con TAB no funciona el Mouse?
Code: Select all  Expand view

REDEFINE FOLDEREX oFld ID 110 OF oDlg PIXEL ROUND 5 UPDATE PROMPT "&Personal", "&Empresarial" DIALOGS "PERSONAL","EMPRESARIAL"  
 


Pulsando Alt-E pasa, pero con el Mouse NO

Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1594
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Ayuda Bug TFolderEx, por favor

Postby jmartial » Wed Oct 08, 2014 4:32 pm

Buenas tardes Antonio,

Eso ya lo había probado, incluso antes del DispEnd(), pero tiene otro efecto colateral negativo y feo.

Si tienes un tfolderex con varias pestañas, con que pases el ratón por encima de las otras pestañas, a la vez que se pinta la rayita azul en la pestaña indicando que estas sobre ella y con cada cambio de cordenada del ratón encima de la pestaña, se repinta en el mismo número el diálogo.

Es decir, estás en la primera pestaña y pones el ratón encima de la 2ª y lo mueves de lado a lado de la pestaña sin salirte de ella y el parpadeo de los controles del
diálogo son bestiales.

Por eso, no lo ví una solución aceptable.
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda Bug TFolderEx, por favor

Postby jmartial » Wed Oct 08, 2014 4:34 pm

Adhemar,

No entiendo muy bien a qué te refieres, pero en los recursos hay que definirlo con el nombre de clase "TFolderex" y te debe funcionar.
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda Bug TFolderEx, por favor

Postby acuellar » Wed Oct 08, 2014 4:57 pm

Gracias Joaquin

Lo cree con Custom control y lo definí con la clase "TFolderex"

y funcionó.

Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1594
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Ayuda Bug TFolderEx, por favor

Postby jmartial » Wed Oct 08, 2014 5:31 pm

Antonio,

He hecho unos cambios a la clase y para mi gusto está al 95% solucionado, haciendo muchas tonterías con el ratón cambiando el tamaño del diálogo principal,
puede que tarde un momentillo en refrescarlo pero es muy difícil que pase y se aprecie.

Con estos cambios, no hay que cambiar el estilo del diálogo, y no parpadea constantemente con el movimiento del ratón:

Inicializar esta DATA:

Code: Select all  Expand view
DATA lOutCtrl AS LOGICAL INIT .T.   // New!


Cambiar este método:

Code: Select all  Expand view
METHOD MouseLeave( nRow, nCol, nFlags ) CLASS TFolderEx

   ::nOver    := 0
   ::lOutCtrl := .T.  // New!
   ::Refresh()

return nil


Cambiar este TROZO de método:

Code: Select all  Expand view
METHOD MouseMove( nRow, nCol, nFlags ) CLASS TFolderEx

   LOCAL lOverBmp := .F.
   LOCAL aBmpPos

  ::lOutCtrl := .F.  // New!
 
  if ::lWorking
      return NIL
  endif

  ...............
 



Cambiar este método:

Code: Select all  Expand view
METHOD Paint() CLASS TFolderEx

   LOCAL aInfo

   IF ::lWorking
      RETURN NIL
   ENDIF

   aInfo   := ::DispBegin()



   IF ::nLayOut == LAYOUT_TOP .OR. ::nLayOut == LAYOUT_BOTTOM
      ::PaintTB()
   ELSE
      ::PaintLR()
   ENDIF

   ::DispEnd( aInfo )

   if ::nOver==0 .and. ::lOutCtrl
      ::aDialogs[ ::nOption ]:Refresh()   // Nuevo !!!
   endif  
   

RETURN NIL
 



A ver que te parece, si ves una solución mejor me lo dices y la pruebo, o si retocando esta puede quedar al 100%.
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda Bug TFolderEx, por favor

Postby Antonio Linares » Wed Oct 08, 2014 5:53 pm

Joaquín,

Tu idea es buena, que la veo como repintar solo al no estar encima del folder.

Pero la pega que le veo es que si accedes al borde del diálogo sin haber pasado por el folder entonces no funcionaria.

Prueba cambiando el método Paint() de esta manera a ver si evita los parpadeos:

Code: Select all  Expand view
METHOD Paint() CLASS TFolderEx

   LOCAL aInfo

   IF ::lWorking
      RETURN NIL
   ENDIF

   aInfo   := ::DispBegin()

   IF ::nLayOut == LAYOUT_TOP .OR. ::nLayOut == LAYOUT_BOTTOM
      ::PaintTB()
   ELSE
      ::PaintLR()
   ENDIF

   ::aDialogs[ ::nOption ]:Refresh()

   ::DispEnd( aInfo )

RETURN NIL
regards, saludos

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

Re: Ayuda Bug TFolderEx, por favor

Postby jmartial » Wed Oct 08, 2014 6:24 pm

Antonio,

Si funciona porque lOutCtrl comienza como .T. , de todas maneras pruebaló, a mi me funciona.

Por otro lado, tu modificación ya te he comentado en otro mensaje, que lo había probado, tanto antes como después del DispEnd() y funciona con el parpadeo contínuo.

El parapadeo es porque tfolderex para pintar la rayita azul al pasar por una pestaña, repinta continuamente con el movimiento del ratón. Yo lo que intento
es sólo refrescar el diálogo cuando el ratón está fuera del tfolderex, es decir al hacer resize.
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda Bug TFolderEx, por favor

Postby Antonio Linares » Wed Oct 08, 2014 7:55 pm

Joaquín,

Si te funciona bien y soluciona el problema lo incluimos en FWH y mil gracias :-)

Pruébalo bien y tu mismo nos dices.
regards, saludos

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

Re: Ayuda Bug TFolderEx, por favor

Postby jmartial » Thu Oct 09, 2014 9:38 pm

Antonio,

Necesito una ayudita para que funcione 100%. Estoy desesperado y no doy con la solución.

Explico lo que queda del bug:

Con las modificaciones anteriores, ya puede hacerse resize del diálogo PADRE y no se borra el interior del folderex.

Pero, al mover el ratón desde una pestaña hacia abajo, detecta que se sale del folderex y repinta, parpadeando.

El tema es que cuando está el ratón encima del diálogo, folderex no detecta que sigue estando encima suya, porque está encima del diálogo.

Siempre que hablo de diálogo, son los del interior del folderex, no del diálogo PADRE.
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda Bug TFolderEx, por favor

Postby jmartial » Mon Oct 13, 2014 5:38 pm

Antonio Buenas tardes,

Sigo con este problema, he encontrado una solucion que funciona muy bien, pero tiene un pequeño efecto colateral.

No hay que hacer ninguna de las modificaciones que puse, sólo esta nueva.

Como el problema era que desaparecía al hacer resize con el ratón, he añadido al final del método Default una sóla línea:

Code: Select all  Expand view
METHOD Default() CLASS TFolderEx
     
       .......................

      ::oWnd:OnResize :={|| ::aDialogs[ ::nOption ]:refresh() }

 



Y funciona de 10, sin ningún parapadeo, ahora, si el usuario ya había definido el codeblock del OnResize del Diálogo contenedor, se pierde su definición.

¿Se podrían sumar los 2 codeblocks? ¿ Que se ejecute el onResize definido previamente y éste después ?
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda Bug TFolderEx, por favor

Postby hmpaquito » Mon Oct 13, 2014 6:38 pm

Si, asi:


Code: Select all  Expand view
METHOD Default() CLASS TFolderEx
     
       .......................
      Local bTmp:= ::oWnd:OnResize

     
      ::oWnd:OnResize :={|| If(bTmp != NIL, Eval(bTmp), NIL), ::aDialogs[ ::nOption ]:refresh() }
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Ayuda Bug TFolderEx, por favor

Postby jmartial » Mon Oct 13, 2014 8:25 pm

Esa era mi pregunta,

Se puede hacer eval() dentro de un eval() ?

Probaré a ver que tal, Gracias.
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda Bug TFolderEx, por favor

Postby Antonio Linares » Mon Oct 13, 2014 10:20 pm

Joaquín,

Muy buena solución :-)
regards, saludos

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

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

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