TSButton V.6.1 como se los prometí

User avatar
alex2002
Posts: 5
Joined: Fri Apr 18, 2008 2:41 pm
Location: Belo Horizonte / MG - Brasil

Muy Buena, Sólo una duda

Post by alex2002 »

Hola Manuel Mercado.

Es un placer de usar su clase. De hecho el uso desde el año 2003.

En esa ocasión se produjo un error de utilizar ALT + CLAVE, cuando hay dos cuadros de diálogo abierto y tienen los mismos botones. Al pulsar ALT + CLAVE actuó todos los botones que había que clave.
Arreglar la sustitución de la SendMsg() por PostMessage(), pero en el actual xHarbour el error persiste. ¿Qué puede ser?

* ============================================================================
* METHOD TSButton:GetDlgCode() Version 6.0 Mar/1/2008
* ============================================================================

METHOD GetDlgCode( nLastKey ) CLASS TSButton

If nLastkey > 0 .and. nLastkey == ::nWakeup
::nWakeup := 0
EndIf

If (! ::oWnd:lValidating .and. ::lCancel .and. ::cAccel != Nil .and. ;
GetAsyncKey( VK_MENU ) .and. ;
GetAsyncKey( Asc( Upper( ::cAccel ) ) ) .and. ::nWakeup == 0 )

** Modificacao feita por Alexandre Pereira JUL/2003
PostMessage( ::hWnd, FM_CLICK )
* ::SendMsg( FM_CLICK )
** Fim
Return 1

ElseIf (! ::oWnd:lValidating .and. ::lWhen .and. !::lCancel .and. ::cAccel != Nil .and. ;
GetAsyncKey( VK_MENU ) .and. ;
GetAsyncKey( Asc( Upper( ::cAccel ) ) ) .and. ::nWakeup == 0 )

** Modificacao feita por Alexandre Pereira JUL/2003
PostMessage( ::hWnd, FM_CLICK )
* ::SendMsg( FM_CLICK )
** Fim


Return 1
EndIf

Return If( ::lActive, DLGC_WANTALLKEYS, Nil )
///////////////////////////////////////////////


Lo siento por la traducción.

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

Post by mmercado »

Hola Alejandre:

A ver si entendí (comprendo más el portugués que las traducciones de google jeje), los botones que actúan con el método GetDlgCode() son solamente aquellos pertenecientes al diálogo que tiene el foco.

No creo que el cambio que planteas tenga algún efecto y la verdad no sé como se puede hacer que actúen con teclas de aceleración los botones en Diálogos diferentes.

Un abrazo.

Manuel Mercado.
User avatar
alex2002
Posts: 5
Joined: Fri Apr 18, 2008 2:41 pm
Location: Belo Horizonte / MG - Brasil

Post by alex2002 »

Maestro Manuel,

Obrigado pela sua resposta. Já que você entende melhor o português do que o GOOGLE, então vai em Português mesmo. hehehehe

Também acho estranho o comportamento quando se pressiona ALT + TECLA, porém, realmente isso acontece. Ele executa todos os botões que possuem a Tecla (key) ACELERADORA, não importando o DIALOG aberto.

Fiz um exemplo para que seja testado. (apenas lembrando que com o MOUSE não apresenta nenhum problema).

/////////////////////////////////////////////////
#include "Fivewin.ch"
#include "\TSButton\Include\TSButton.ch"

//--------------------------------------------------------------------------------------------------------------------//

Function Main()
private oWnd


DEFINE WINDOW oWnd FROM 100, 100 TO 490, 600 PIXEL ;
TITLE "Teste" ;
MENU BuildMenu() ;
COLORS CLR_BLACK, CLR_CYAN

ACTIVATE WINDOW oWnd

Return Nil

//--------------------------------------------------------------------------------------------------------------------//
static function BuildMenu()

local oDlg1, oBtn1

define dialog oDlg1 title 'Dialog 1' of oWnd from 0,0 to 20,90
@ 01,00 sbutton obtn1 Prompt "Sai&r" size 30,40 pixels OF oDlg1 action (oDlg1:end()) MESSAGE 'Pressione ALT + R'
activate dialog oDlg1 NOWAIT
BuildMenu1()

Return Nil

static function BuildMenu1()

local oDlg2, oBtn2

define dialog oDlg2 title 'Dialog 2' of oWnd from 15,10 to 30,120
@ 01,00 sbutton obtn2 Prompt "Sai&r" size 30,40 pixels OF oDlg2 action (oDlg2:end()) MESSAGE 'Pressione ALT + R'
activate dialog oDlg2

Return Nil
//////////////////////////////////////

Se não entender, me diga que tento traduzir. ok ?

Muito Obrigado.
Alexandre Pereira
xHarbour 1.01 - FWH - 8.06 - SqlLib (MySql) - xDevStudio - Ubuntu 8.04
User avatar
alex2002
Posts: 5
Joined: Fri Apr 18, 2008 2:41 pm
Location: Belo Horizonte / MG - Brasil

Post by alex2002 »

up
Alexandre Pereira
xHarbour 1.01 - FWH - 8.06 - SqlLib (MySql) - xDevStudio - Ubuntu 8.04
User avatar
mmercado
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Post by mmercado »

Hola Alexandre:

Creeme que he tratado de reproducir el error que mencionas y en mi sistema funciona todo correctamente, incluso con el ejemplo que mostraste. La tecla de aceleración solo activa el botón del diálogo que tiene el foco.

No sé si alguien más pudiera probar tu ejemplo para ver si les pasa lo mismo.

Incluso si te fijas, el programa NewShape.prg funciona con 2 diálogos abiertos al mismo tiempo y también probé y funciona correctamente.

No sé que más puedo hacer.

Saludos.

Manuel Mercado.
User avatar
alex2002
Posts: 5
Joined: Fri Apr 18, 2008 2:41 pm
Location: Belo Horizonte / MG - Brasil

Post by alex2002 »

ok Maestro,

De qualquer forma muito obrigado pela atenção

Um abraço.
Alexandre Pereira
xHarbour 1.01 - FWH - 8.06 - SqlLib (MySql) - xDevStudio - Ubuntu 8.04
Post Reply