Ayuda Bug TFolderEx, por favor

Ayuda Bug TFolderEx, por favor

Postby jmartial » Tue Oct 07, 2014 2:58 pm

Hola,

Ya he puesto en el foro este problema y no consigo respuesta de nadie.

¿Quien puede arreglar este bug de esta clase? Lo cierto es que así no se puede usar y entregar una aplicación a un cliente final.

El bug es el siguiente:

El contenido de una pestaña, desaparece, es decir no se repinta y se queda gris, o del color del folderex. Se reproduce intentando cambiar el tamaño de un
diálogo con el ratón con borde estilo ThickFrame. También desaparece en otras ocasiones pero no sé reproducirlo. A la clase TFolder no le ocurre.

Aquí una imágen antes de intentar cambiar el tamaño:

Image

Y Aquí como queda después de intentarlo:

Image

Por favor, a ver si hay manera de solucionarlo o si es una clase que no pertenece a Fivewin o no tiene mantenimiento, saberlo para no usarla.
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 » Tue Oct 07, 2014 4:20 pm

Joaquín,

Puedes mostrar el código fuente de como lo haces, o mejor aún, puedes proporcionar un ejemplo para probarlo aqui ? gracias
regards, saludos

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

Re: Ayuda Bug TFolderEx, por favor

Postby jmartial » Tue Oct 07, 2014 4:31 pm

Hola Antonio,

El código es redefinir desde recursos un TFolderex, y el diálogo el estilo WS_THICKFRAME.

Necesitaría un tiempo para preparar un ejemplo autocontenido, lo voy a intentar y lo paso a ver si se puede detectar de donde viene el problema.
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 » Tue Oct 07, 2014 4:41 pm

Antonio,

Que va, desde recursos fallaba, pero desde código también.

Aquí tienes el ejemplo autocontenido:

Code: Select all  Expand view
#include "fivewin.ch"

Function errorFolderex()

    DEFINE DIALOG oDlg TITLE "I am a DialogBox" STYLE nOr(WS_POPUP,WS_THICKFRAME);
      FROM 0,0 TO 300, 400 PIXEL //
     
   
    @ 15, 20 FOLDEREX oFld SIZE 120, 100 OF oDlg PIXEL ROUND 5 UPDATE ;    
     PROMPT  "Option 1", "Option 2", "Option 3", "Option 2", "Option 2"
     
   
    @ 1, 1 BUTTON "&Botón que desaparecerá" SIZE 100, 20 OF oFld:aDialogs[1] PIXEL
           
   
    ACTIVATE DIALOG oDlg CENTERED

return nil
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda Bug TFolderEx, por favor

Postby cnavarro » Tue Oct 07, 2014 5:51 pm

Puedes probarlo con la clase TCFolderEx que está en el repositorio de EReport a ver si te ocurre lo mismo?
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6501
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Ayuda Bug TFolderEx, por favor

Postby karinha » Tue Oct 07, 2014 6:00 pm

Code: Select all  Expand view


#include "fivewin.ch"

Function NoerrorFolderex()

   local oFld

    DEFINE DIALOG oDlg TITLE "I am a DialogBox" STYLE nOr(WS_POPUP,WS_THICKFRAME);
      FROM 0,0 TO 300, 400 PIXEL //
     
   
    @ 15, 20 FOLDEREX oFld SIZE 120, 100 OF oDlg PIXEL ROUND 5 UPDATE ;    
     PROMPT  "Option 1", "Option 2", "Option 3", "Option 2", "Option 2"
     
    // Error
//  @ 10, 1 BUTTON "&Botón que desaparecerá" SIZE 100, 20 OF oFld:aDialogs[1] PIXEL

    // Correcto
    @ 120, 25 BUTTON "&Botón no desaparecerá" SIZE 100, 20 OF oDlg PIXEL
           
    ACTIVATE DIALOG oDlg CENTERED

return nil
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7244
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ayuda Bug TFolderEx, por favor

Postby jmartial » Tue Oct 07, 2014 8:49 pm

Cristobal,

Estuve viéndola, cambiaste el estilo del diàlogo de la pestaña, lo probé pero no va por ahí el problema.
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 » Tue Oct 07, 2014 8:51 pm

Karhina,

Creo que no has leído cual es el problema o yo no entiendo que pretendes con ese cambio en el código.
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda Bug TFolderEx, por favor

Postby cnavarro » Tue Oct 07, 2014 9:23 pm

Joaquin
De momento puedes solucionarlo asi
Code: Select all  Expand view

Function NoerrorFolderex()

   local oFld
   local oDlg

    DEFINE DIALOG oDlg TITLE "I am a DialogBox" STYLE nOr(WS_POPUP,WS_THICKFRAME);
      FROM 0,0 TO 300, 400 PIXEL //
     
    @ 15, 20 FOLDEREX oFld SIZE 120, 100 OF oDlg PIXEL ROUND 5 UPDATE ;    
     PROMPT  "Option 1", "Option 2", "Option 3", "Option 2", "Option 2"
     
    @ 10, 1 BUTTON "&Botón que desaparecerá" SIZE 80, 20 OF oFld:aDialogs[1] PIXEL

    ACTIVATE DIALOG oDlg CENTERED ON PAINT oFld:aDialogs[1]:Refresh()   // AEVal( oFld:aDialogs, { |aD| aD:Refresh() } )

return nil

 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6501
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Ayuda Bug TFolderEx, por favor

Postby jmartial » Wed Oct 08, 2014 7:34 am

Buenos Días Cristobal,

Eso no es arreglar la clase para cualquiera de los folderex que uso en mi aplicación. Eso es una solución manual al ejemplo, para demostrar que la clase
no refresca cuando debe el diálogo hijo que está mostrando en la pestaña.

Lo que pido es un arreglo del bug a nivel interno de la clase, para poderla usar con confianza y considerarla una clase usable.

Gracias por tu interé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 Antonio Linares » Wed Oct 08, 2014 8:51 am

Joaquín,

Asi puedes solucionarlo:

Code: Select all  Expand view
#include "fivewin.ch"

Function errorFolderex()

   local oDlg

   DEFINE DIALOG oDlg TITLE "I am a DialogBox" ;
      STYLE nOr( WS_POPUP, WS_THICKFRAME, WS_CLIPCHILDREN ) ;
      FROM 0,0 TO 300, 400 PIXEL
   
   @ 15, 20 FOLDEREX oFld SIZE 120, 100 OF oDlg PIXEL ROUND 5 UPDATE ;    
     PROMPT  "Option 1", "Option 2", "Option 3", "Option 2", "Option 2"
     
   @ 1, 1 BUTTON "&Botón que desaparecerá" SIZE 100, 20 OF oFld:aDialogs[1] PIXEL
   
   ACTIVATE DIALOG oDlg CENTERED

return nil
regards, saludos

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

Re: Ayuda Bug TFolderEx, por favor

Postby jmartial » Wed Oct 08, 2014 10:23 am

Antonio,

Ahora no me borra el interior del folderex (Correcto) pero no me pinta bien el resto de controles que están fuera del folderex y pertenecen al Diálogo (Incorrecto).

Creo que la solución está dentro del código de la clase Tfolderex.
Un Saludo,
Joaquín Martínez
jmartial
 
Posts: 458
Joined: Tue Mar 14, 2006 7:26 pm

Re: Ayuda Bug TFolderEx, por favor

Postby Daniel Garcia-Gil » Wed Oct 08, 2014 1:24 pm

Code: Select all  Expand view
#include "fivewin.ch"

Function main()

    DEFINE DIALOG oDlg TITLE "I am a DialogBox" STYLE nOr(WS_POPUP,WS_THICKFRAME, WS_CLIPCHILDREN);
      FROM 0,0 TO 300, 400 PIXEL //
     
   
    @ 15, 20 FOLDEREX oFld SIZE 120, 100 OF oDlg PIXEL ROUND 5 UPDATE ;    
     PROMPT  "Option 1", "Option 2", "Option 3", "Option 2", "Option 2"
     
   
    @ 1, 1 BUTTON "&Botón que desaparecerá" SIZE 100, 20 OF oFld:aDialogs[1] PIXEL
           
    @ 120, 25 BUTTON "&Botón no desaparecerá" SIZE 100, 20 OF oDlg PIXEL
   
    ACTIVATE DIALOG oDlg CENTERED

return nil


Saludos...

Esto me funciona perfectamente bien

jmartial wrote:Ahora no me borra el interior del folderex (Correcto) pero no me pinta bien el resto de controles que están fuera del folderex y pertenecen al Diálogo (Incorrecto).

Creo que la solución está dentro del código de la clase Tfolderex.

Analizo un poco lo que dices y las pregunta son, como podria estar el error en el folderex cuando dices que tienes problemas con los controles fuera del folderex...?
si eliminas el folderex con la solucion planteada sigues teniendo los problemas. ?
Para un mejor soporte trata detallar los "problemas" de los controles que tienes fuera del folderex
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Ayuda Bug TFolderEx, por favor

Postby jmartial » Wed Oct 08, 2014 3:37 pm

Daniel Buenas tardes,

Voy a responderte a ver si me explico y le encuentro la solución.

1) Tengo unos diálogos desde Recursos, sin el estilo WS_CLIPCHILDREN con borde WS_THICKFRAME con un TGROUP, TSAYs ,TGETs y TFOLDER.
Si con enl ratón cambio el tamaño clickeando en el borde a derecha e izquierda, todo se repinta bien, el TFOLDER , TGROUP y resto de controles.

2) Cambio TFOLDER por TFolderEx porque me parece más bonita y original.
Si con el ratón cambio el tamaño clickeando en el borde a derecha e izquierda, todo se repinta bien, TGROUP y resto de controles. PERO la pestaña activa
del TFolderEx se borra.

3) Solución propuesta, poner estilo al diálogo padre WS_CLIPCHILDREN, se soluciona el problema de TFolderEx pero ahora descubro que el que no se repinta bien es
TGroup que está fuera del TFolderEx. Es decir TFolder se repintaba perfectamente y en las mismas condiciones TFolderEx No. Lo que significa que habría que hacer
que la clase TFolderEx se repintara bien aunque el diálogo padre no tenga el estilo WS_CLIPCHILDREN.

Este es el efecto que queda por culpa del TGROUP con estilo de diálogo WS_CLIPCHILDREN:

Image

La parte negra es porque he hecho resize con el ratón de izquierda a derecha hasta lo negro. Antes, se repintaba correctamente.

Gracias por tu atención y espero que ahora se entienda un poco mejor.
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 3:56 pm

Joaquín,

Con este pequeño cambio en la Clase TFolderEx se soluciona:

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 )

   ::aDialogs[ ::nOption ]:Refresh()   // Nuevo !!!

RETURN NIL
regards, saludos

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

Next

Return to FiveWin para Harbour/xHarbour

Who is online

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