Page 1 of 1

Bug in checkbox in folder (dot border) with themes (fixed)

PostPosted: Tue Jan 03, 2006 6:05 pm
by carlos vargas
Hola Antonio,

este codigo muestra un error que tiene hace tiempo fwh con los checkbox
cuando estan contenidos en folder, si empiezas a presionar la tecla tab para moverte entre los controls del dialogo miraras que la primera vez quel el chekbox obtenga foco no mostrara el tipico borde punteado, la siguiente ves lo tomara pero al perder el foco mantiene el borde.

esto no ocurre cuando no aplicas el tema de winxp.

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

PROCEDURE Main()

   LOCAL oDlg, oFolder
   LOCAL cVar0, cVar1, cVar2, lVar1, lVar2

   cVar0 := space(10)
   cVar1 := space(20)
   cVar2 := space(20)
   lVar1 := .t.
   lVar2 := .t.

   DEFINE DIALOG oDlg NAME "Main"

   REDEFINE GET cVar0 ID 101 OF oDlg

   REDEFINE FOLDER oFolder ID 102 OF oDlg ;
      PROMPT "&Uno", "&Dos" ;
      DIALOGS "Page1", "Page2"

      REDEFINE GET cVar1 ID 101 OF oFolder:aDialogs[1]
      REDEFINE CHECKBOX lVar1 ID 102 OF oFolder:aDialogs[1]

      REDEFINE GET cVar2 ID 101 OF oFolder:aDialogs[2]
      REDEFINE CHECKBOX lVar2 ID 102 OF oFolder:aDialogs[2]

   REDEFINE BUTTON ID 103 OF oDlg ACTION oDlg:end()

   ACTIVATE DIALOG oDlg CENTERED

RETURN NIL



Code: Select all  Expand view
//win32.rc
1 24 "winxp.man"

main DIALOG 8, 53, 262, 200
STYLE DS_MODALFRAME | 0x4L | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Error de Checkbox en folder"
FONT 8, "MS Sans Serif"
{
LTEXT "Codigo", -1, 9, 8, 32, 8
EDITTEXT 101, 43, 8, 53, 12
CONTROL "", 102, "SysTabControl32", 0 | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 4, 27, 256, 151
PUSHBUTTON "Cerrar", 103, 210, 182, 50, 14
}


Page1 DIALOG 6, 15, 161, 114
STYLE 0x4L | WS_CHILD | WS_VISIBLE
FONT 8, "MS Sans Serif"
{
LTEXT "Codigo", -1, 9, 9, 30, 8
EDITTEXT 101, 36, 9, 51, 12
CHECKBOX "Casado", 102, 37, 24, 49, 12, BS_AUTOCHECKBOX | WS_TABSTOP
}


Page2 DIALOG 6, 15, 161, 114
STYLE 0x4L | WS_CHILD | WS_VISIBLE
FONT 8, "MS Sans Serif"
{
LTEXT "Codigo", -1, 9, 9, 30, 8
EDITTEXT 101, 36, 9, 51, 12
CHECKBOX "Casado", 102, 37, 24, 49, 12, BS_AUTOCHECKBOX | WS_TABSTOP
}


PostPosted: Tue Jan 03, 2006 6:28 pm
by carlos vargas
caba aclarar con fwh 2.6, xharbour y harbour, bcc55.

una imagen del problema

Image

salu2
carlos vargas[/url]

PostPosted: Fri Feb 03, 2006 1:31 am
by Antonio Linares
Carlos,

El build de Febrero de FWH soluciona este problema. Hemos tardado en cazarlo, pero al final lo hemos conseguido :)

PostPosted: Thu Feb 09, 2006 7:45 pm
by carlos vargas
Gracias Antonio, :-) ya empezaba a temer que lo hubieras olvidado, o que estuviera dificil la cosa :-(, no es posible modificar los fuentes ?

salu2
gracias
carlos vargas

PostPosted: Thu Feb 09, 2006 9:23 pm
by Antonio Linares
Carlos,

En FWH 2.7 Febrero se han implementado muchos cambios, sin embargo esto puede solucionarlo,

En el método Colors( hDC ) de checkbox y radio, hay que implementar este cambio:

Code: Select all  Expand view
METHOD Colors( hDC ) CLASS ...

   ...

   if IsAppThemed()
      DrawPBack( ::hWnd,  hDC )
   endif   

return ::oBrush:hBrush

PostPosted: Fri Feb 10, 2006 6:10 pm
by carlos vargas
gracias antonio, funciono de esta forma (solo en xharbour)

Code: Select all  Expand view
...
/*al inicio de la aplicación*/
EXTEND CLASS TRADIO      WITH METHOD Colors
EXTEND CLASS TCHECKBOX  WITH METHOD Colors
...


Code: Select all  Expand view
/*en cualquier parte :-)*/
STATIC FUNCTION Colors( hDC )
   LOCAL SELF := HB_QSelf()

   IF IsAppThemed()
      DrawPBack( ::hWnd,  hDC )
   ENDIF

RETURN ::oBrush:hBrush


salu2
carlos vargas

PostPosted: Mon Feb 20, 2006 4:57 pm
by carlos vargas
Antonio, si bien se corrigio el problema de borde puntedo en el checkbox cuando tienes temas aplicados en winxp, cuando no tiene tema aparece dentro de la region del borde un color blanco de fondo. :-(

salu2
carlos vargas

PostPosted: Mon Feb 20, 2006 6:55 pm
by Antonio Linares
Carlos,

Hemos probado el ejemplo samples\TestFold.prg con y sin temas y está bien. De todas formas hemos implementado una serie de cambios que publicaremos en el build de Marzo.