Page 1 of 1

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

Posted: 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

//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

//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
}


Posted: 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]

Posted: 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 :)

Posted: 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

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

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

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

Code: Select all

METHOD Colors( hDC ) CLASS ...

   ...

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

return ::oBrush:hBrush

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

Code: Select all

...
/*al inicio de la aplicación*/
EXTEND CLASS TRADIO		WITH METHOD Colors
EXTEND CLASS TCHECKBOX  WITH METHOD Colors
...

Code: Select all

/*en cualquier parte :-)*/
STATIC FUNCTION Colors( hDC )
	LOCAL SELF := HB_QSelf()

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

RETURN ::oBrush:hBrush
salu2
carlos vargas

Posted: 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

Posted: 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.