FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Capturar ALT+tecla de funci贸n
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Capturar ALT+tecla de funci贸n
Posted: Thu Feb 18, 2010 09:44 AM

Hay alguna manera de poder capturar si se ha pulsado ALF+F1 por ejemplo io cualquier combinaci贸n de tecla ALT mas tecla de funci贸n.
ALT + letra lo tengo resulto, pero no consigo capturar ALT+ telca de funcion.

Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: Capturar ALT+tecla de funci贸n
Posted: Thu Feb 18, 2010 12:30 PM
Hola Biel
Esto estar铆a al inverso, primero F1 y luego ALT, no es lo que pides pero por ahi te sirve.
Code (fw): Select all Collapse
oControl:bKeyDown:={|nkey,nFlag| IF( GetKeyState(VK_F1) .AND. nKey=17 , MsgInfo("Probando") , )}

Saludos desde Argentina, Esteban.
Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Re: Capturar ALT+tecla de funci贸n
Posted: Fri Feb 19, 2010 07:42 AM

Gracias Esteban,
pero el c贸digo que me pasaste no me funciona. No se si en otro control funciona pero en concreto en un txBrowse que es donde lo estoy probando no hace nada.
El tema es que la tecla ALT no activa el metodo KeyDown, para capturar alt he a帽adido un nuevo metodo SysCommnad, que si me permite capturar ALT + una tecla, pero no con las teclas de funci贸n.

Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: Capturar ALT+tecla de funci贸n
Posted: Fri Feb 19, 2010 11:55 AM

Con los dos ALT sigue sin hacer nada??

Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Re: Capturar ALT+tecla de funci贸n
Posted: Fri Feb 19, 2010 01:23 PM

No alt no hace nada, no activa KeyDown.

Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 845
Joined: Sun Oct 09, 2005 05:36 PM
Re: Capturar ALT+tecla de funci贸n
Posted: Fri Feb 19, 2010 04:03 PM

Esteban y Biel,
he estado probando diferentes caminos y no he podido haer que ALT funcione, probando en un keydown de dialogo AltGr si me devuelve valor de 17 pero al hacer + cualquier funcion ya no va.
yo hago utilizo con keydown GETKEYSTATE(VK_CONTROL)+asc(nKey) y me funciona bien,
saludos
paco

____________________

Paco
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Capturar ALT+tecla de funci贸n
Posted: Fri Feb 19, 2010 04:51 PM
Code (fw): Select all Collapse
   DATA   bAltKey

    METHOD SysCommand( nType, nLoWord, nHiWord )


METHOD Syscommand( nType, nLowOrd, nHiWord ) Class TWBrowse  //Era TcBrowse

    Local oFolder, nItem, nButton 
    Local hCtrl 

    DO CASE

        Case nType == SC_KEYMENU   // Alt+...

            If ::bAltKey != Nil
                Eval( ::bAltKey, nLoWord )
            Endif

    ENDCASE

Return Super:SysCommand( nType, nLoWord, nHiWord )

//

Ejemplo:


    oLbx:bAltKey  := { | nKey, nFlags | Teste( nKey, nFlags ) }



Static Function Teste( nKey, nFlags )

    local cKey:= CHR( nKey )

    If  GetKeyState( VK_CONTROL ) .And. ;
        GetKeyState( VK_SHIFT )

        MsgInfo( " CONTROL + SHIFT + " + cKey )

        ElseIf GetKeyState( VK_CONTROL )

        MsgInfo( " ALT + CONTROL + " + cKey )

        ElseIf GetKeyState( VK_SHIFT )

        MsgInfo( " ALT + SHIFT + " + cKey )

        ElseIf GetKeyState( VK_MENU )                    // alt key

        MsgInfo( " ALT + " + cKey )

    EndIf

    cKey:= Upper( cKey )

    IF  cKey == "I"            // Alt+I

        MsgInfo( " INCLUIR" )

        ELSEIF cKey == "A"    // Alt+A

        MsgInfo( " ALTERAR" )

        ELSEIF cKey == "E"    // Alt+E

        MsgInfo( " EXCLUIR" )

        ELSEIF cKey == "P"    // Alt+P

        MsgInfo( " IMPRIMIR" )

        ELSEIF cKey == "R"    // Alt+R

        MsgInfo( OemToAnsi( " RELAT脿RIOS" ) )

    ENDIF

Return( nKey )



Saludos
Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Re: Capturar ALT+tecla de funci贸n
Posted: Mon Feb 22, 2010 08:00 AM

Hola Karinha,
si tu ejemplo funciona casi bien. Ya lo tenia implementado en la clase txBrowse, pero no se activa por la combinacion de teclas ALT+ F2, F3. Funciona bien con el resto de teclas, pero no con las de funci贸n.

Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Capturar ALT+tecla de funci贸n
Posted: Mon Feb 22, 2010 09:54 AM
Biel,

Parece que esto es lo que and谩bamos buscando :-)
Code (fw): Select all Collapse
#include "FiveWin.ch"

#define WM_SYSKEYDOWN 聽 0x0104

function Main()

聽 聽local oWnd := TMyWindow():New()

聽 聽ACTIVATE WINDOW oWnd

return nil

CLASS TMyWindow FROM TWindow

聽 聽METHOD HandleEvent( nMsg, nWParam, nLParam )
聽 聽
ENDCLASS

METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS TMyWindow

聽 聽if nMsg == WM_SYSKEYDOWN
聽 聽 聽 if nWParam >= 112 .and. nWParam <= 123
聽 聽 聽 聽 聽MsgInfo( "Alt + F" + AllTrim( Str( nWParam - 111 ) ) )
聽 聽 聽 endif 聽 
聽 聽endif
聽 聽
return Super:HandleEvent( nMsg, nWParam, nLParam )
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Re: Capturar ALT+tecla de funci贸n
Posted: Tue Feb 23, 2010 07:43 AM

Perfecto Antonio, he a帽adido el metodo en xBrowse que es donde realmente lo necesitaba y funciona ok.

Muchas gracias.

Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Capturar ALT+tecla de funci贸n
Posted: Tue Feb 23, 2010 07:47 AM

Biel,

Si nos envias 贸 publicas aqui los cambios realizados, con mucho gusto los incluiremos en la pr贸xima versi贸n de FWH. Gracias :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Re: Capturar ALT+tecla de funci贸n
Posted: Tue Feb 23, 2010 11:35 AM
Antonio, basicamente he copiado lo que tu has puesto. En mi caso tengo una clase heredada de txBrowse, para no andar toqueteando la original, le he a帽adido un data y un metodo.

Code (fw): Select all Collapse
聽DATA 聽 bKeyAlt 聽// Para acionar 聽Tecla ALT+Keys
...
聽METHOD HandleEvent( nMsg, nWParam, nLParam )
...
//-------------------------------------------------------------//
METHOD HandleEvent( nMsg, nWParam, nLParam ) 
聽 聽if nMsg == WM_SYSKEYDOWN
聽 聽 聽 IF ::bKeyAlt!=NIL
聽 聽 聽 聽 聽Eval( ::bKeyAlt, nWparam )
聽 聽 聽 ENDIF
聽 聽ENDIF

RETURN Super:HandleEvent( nMsg, nWParam, nLParam )


Por cierto, alg煤n metodo de que F1 no llame a la ayuda.
Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Capturar ALT+tecla de funci贸n
Posted: Tue Feb 23, 2010 12:54 PM

Biel,

gracias :-)

Para cambiar el comportamiento de F1 tendr铆as que implementar el m茅todo Help() en tu clase derivada y modificarlo seg煤n tus necesidades. Por defecto al pulsarse F1 Windows env铆a un mensaje WM_HELP que FiveWin ruta automaticamente al m茅todo Help().

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Re: Capturar ALT+tecla de funci贸n
Posted: Wed Feb 24, 2010 08:54 AM

Help :wink: , no consigo evitar el mensaje No help file defined with SetHelpFile.

Consigo detectar la puslaci贸n de F1 en el metodo HandleEvent, he creado el metodo Help(), pero no pasa por ese metodo, tambien he creado el metodo HelpTopic que si pasa por 茅l, pero despues sigue aparareciendome el mensaje de aviso de que no hay fichero de ayuda definido ( creo que viene de la funci贸n isHelpFile ).

Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Capturar ALT+tecla de funci贸n
Posted: Wed Feb 24, 2010 12:21 PM

Mira 贸 busca por ac谩: HELP32.PRG

Te basta hacer los cambios necesarios en el.

Saludos.

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341