FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ayuda Bug TFolderEx, por favor
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Ayuda Bug TFolderEx, por favor
Posted: Tue Oct 07, 2014 02: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:



Y Aquí como queda después de intentarlo:



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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Tue Oct 07, 2014 04: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
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Tue Oct 07, 2014 04: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
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Tue Oct 07, 2014 04:41 PM
Antonio,

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

Aquí tienes el ejemplo autocontenido:

Code (fw): Select all Collapse
#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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Tue Oct 07, 2014 05: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
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Tue Oct 07, 2014 06:00 PM
Code (fw): Select all Collapse
#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
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Tue Oct 07, 2014 08: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
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Tue Oct 07, 2014 08: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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Tue Oct 07, 2014 09:23 PM
Joaquin
De momento puedes solucionarlo asi
Code (fw): Select all Collapse
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
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Wed Oct 08, 2014 07: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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Wed Oct 08, 2014 08:51 AM
Joaquín,

Asi puedes solucionarlo:

Code (fw): Select all Collapse
#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
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: 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
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Wed Oct 08, 2014 01:24 PM
Code (fw): Select all Collapse
#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
Posts: 458
Joined: Tue Mar 14, 2006 07:26 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Wed Oct 08, 2014 03: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:



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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Ayuda Bug TFolderEx, por favor
Posted: Wed Oct 08, 2014 03:56 PM
Joaquín,

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

Code (fw): Select all Collapse
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