Maestro Manuel, Bug en TSBUTTON

Maestro Manuel, Bug en TSBUTTON

Postby Cgallegoa » Fri Oct 03, 2008 4:57 pm

Hola Maestro Manuel:

En la última versión encontré dos novedades, podrías decirme cómo solucionarlas ?

1.- Si tienes un Diálogo armado con RECURSOS, con varios botones y te mueves con la tecla TAB, el botón que toma el foco pintaba un recuadro punteado indicándote que tiene el foco. Con la última versión que amablemente me enviaste ya no pinta el recuadro y no se sabe en cuál botón está el foco.

Cómo puedo hacer para que vuelve a pintar el recuadro. ?


2.- Si tomas el ejemplo NEWSHAPE.PRG y haces la siguiente modificación:

En la línea 94 cambias

Code: Select all  Expand view
@155, 45 SBUTTON aBtn[ 8 ] PROMPT "escucha" RESOURCE "Audib" OF oDlg ;
             COLORS CLR_WHITE, nRGB( 255, 85, 0 ) SIZE 30, 35 PIXEL SUNSET TEXT ON_TOP FONT oFont

por

Code: Select all  Expand view
@155, 45 SBUTTON aBtn[ 8 ] PROMPT "escucha1" RESOURCE "Audib" OF oDlg ;
            COLORS CLR_WHITE, nRGB( 255, 85, 0 ) SIZE 30, 35 PIXEL SUNSET TEXT ON_TOP FONT oFont;
            ACTION (iif(aBtn[ 9 ]:lActive,aBtn[9]:Disable(),aBtn[9]:Enable()),;
                    aBtn[ 9 ]:Refresh(.T.))


y agregas despues de definido el SBUTTON aBtn[ 9 ]

Code: Select all  Expand view
aBtn[ 9 ]:Disable()


Cuando la aplicación entra, el aBtn[ 9 ] está disable y pinta los contornos del botón redondos. Perfecto

Pero si pulsas sobre el botón aBtn[ 8 ] para que lo active y luego pulsas nuevamente para que lo desactive entonces pinta los bordes en ángulo recto. Pierde el efecto Round.

Si quitas aBtn[ 9 ]:Disable(), al iniciar el botón está activo. Si pulsas aBtn[ 8 ], los desactiva y pinta los bordes en ángulo recto. Pierde el efecto Round.

Estos son botones estilo SUNSET. Lo mismo pasa con el estilo CRYSTAL.

Cómo lo soluciono ?

De igual manera en el ejemplo TESTBTN.PRG en el botón "Buttons from code", al pulsar el botón "Activate", para que active los botones del diálogo, entre los que está uno REDONDO, yl pulsarlo otra vez para que desactive, el botón REDONDO pinta un marco blanco cuando está desactivado.

Cómo lo soluciono ?

Por otro lado, qué uso le das a la clase TSGRADIE ?

Saludos,

Carlos Gallego
Cgallegoa
 
Posts: 414
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Postby Ruben D. Fernandez » Fri Oct 03, 2008 8:40 pm

Estimado Manuel:

Aprovechando... le hago una consulta:

Es posible que con la clausula CRYSTAL el caption del TSBUTTON
quede en el medio y no en la linea de abajo?
(Usado como boton , no el la tsbar)

Saludos y Gracias

Ruben Fernandez
Ruben D. Fernandez
 
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay

Postby Cgallegoa » Sun Oct 05, 2008 7:42 pm

Mestro, alguna guía será bienvenida.

Saludos,

Carlos Gallego
Cgallegoa
 
Posts: 414
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Postby Cgallegoa » Mon Oct 06, 2008 7:09 pm

Maestro Manuel, ayudaaaaaaaa..... :cry:

Con el fin de no molestarte le he dado la vuelta por todos los lados, pero no consigo solucionar el pintado del recuadro cuando un botón tiene el foco. La mayoría de los usuarios se mueven entre los controles de una ventana o un díalogo con la tecla Tabs, y para esto es vital saber en dónde está el foco. Si tienes varios botones y el foco está en alguno de ellos quedas perdido porque no sabes en cuál está. :?

Por favor dame una guía de cómo solucionarlo. Sólo una pìsta, yo hago el resto.

Gracias y saludos,

Carlos Gallego
Cgallegoa
 
Posts: 414
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Postby mmercado » Tue Oct 07, 2008 1:25 pm

Hola Carlos:

Discúlpame, había estado unos días ausente de los foros, déjame analizar el problema y seguramente encontraremos una solución.

Un abrazo.

Manuel Mercado
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Postby Cgallegoa » Tue Oct 07, 2008 2:55 pm

Gracias Maestro, quedo a la espera.

Un abrazo,

Carlos Gallego
Cgallegoa
 
Posts: 414
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador

Maestro Manuel, Bug en TSBUTTON - Posible solución

Postby Cgallegoa » Mon Oct 13, 2008 12:42 am

Maestro Manuel

Una posible solución al pintado del cuadro cuando un botón tiene el foco es cambiando en el Method Paint:

Erróneo:
Code: Select all  Expand view
lFocused := If( ! lAnd( ::nStyle, WS_TABSTOP ) .or. ;
                     cClassName == "TBAR" .or.;
                     cClassName == "TSBAR" .or. ;
                     nShape == 2 .or. ::lDrag, .F., lFocused )
Parece que no está definiendo ::nStyle cuando es desde recursos, por lo que " ! lAnd( ::nStyle, WS_TABSTOP ) " será siempre Falso

Correcto:
Code: Select all  Expand view
lFocused := If( ! lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), WS_TABSTOP ) .or.;
                     cClassName == "TBAR" .or.;
                     cClassName == "TSBAR" .or. ;
                     nShape == 2 .or. ::lDrag, .F., lFocused )

Aparentemente funciona bien. Pinta el recuadro cuando un botón tiene el foco.

Podrías confirmarme si es correcto el cambio ?

Queda pendiente de solucionar el pintado cuando los botones tienen el atributo ROUNDED y se intercambia entre Disable() y Enable().

Gracias y un abrazo,

Carlos Gallego
Cgallegoa
 
Posts: 414
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador


Return to FiveWin para Harbour/xHarbour

Who is online

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