Usar wheel (rodinha) do mouse no Menu Prompt
Moderador: Moderadores
Usar wheel (rodinha) do mouse no Menu Prompt
Pessoal,
Tem como usar o wheel do mouse (rodinha) para rolar no prompt de menu, como defino o _SET_EVENTMASK ?
Tem como usar o wheel do mouse (rodinha) para rolar no prompt de menu, como defino o _SET_EVENTMASK ?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Usar wheel (rodinha) do mouse no Menu Prompt
Algo assim?
Código: Selecionar todos
PROCEDURE TEST7( cSkip )
LOCAL nKey, nMask, cText
CLS
? "For the last test, a loop is started and all keyboard and mouse"
? "events are allowed. Each event will be displayed. Press the TAB"
? "key to exit. Try moving the mouse, holding and releasing the mouse"
? "buttons as well as double-clicking the mouse buttons."
?
? "Press any key."
nMask := INKEY_ALL
SET(_SET_EVENTMASK, nMask)
IF ! EMPTY( cSkip )
IF UPPER( cSkip ) == "BREAK"
SETCANCEL(.T.)
ALTD(1)
tone( 440, 6 )
ELSE
SETCANCEL(.F.)
ALTD(0)
tone( 660, 6 )
END IF
END IF
WHILE (nKey := INKEY( 0, nMask )) != K_TAB
DO CASE
CASE nKey == K_MOUSEMOVE
? "The mouse moved."
CASE nKey == K_LBUTTONDOWN
? "The left mouse button was pushed."
CASE nKey == K_LBUTTONUP
? "The left mouse button was released."
CASE nKey == K_RBUTTONDOWN
? "The right mouse button was pushed."
CASE nKey == K_RBUTTONUP
? "The right mouse button was released."
CASE nKey == K_LDBLCLK
? "The left mouse button was double-clicked."
CASE nKey == K_RDBLCLK
? "The right mouse button was double-clicked."
OTHERWISE
? "A keyboard key was pressed: ", nKey,;
IF( nKey >= 32 .AND. nKey <= 255, CHR( nKey ), "" )
END CASE
END WHILE
? "The TAB key ("+LTRIM(STR(nKey))+") was pressed. Exiting..."
RETURN
Usar wheel (rodinha) do mouse no Menu Prompt
Obrigado Kapiaba,
Consegui, adaptei um exemplo que o Abel postou em 2012 agora usando wheel (rodinha), e destaque usando a seta do mouse.
Consegui, adaptei um exemplo que o Abel postou em 2012 agora usando wheel (rodinha), e destaque usando a seta do mouse.
- Anexos
-
MENUTO.PRG- Exemplo usando wheel
- (7.68 KiB) Baixado 126 vezes
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Usar wheel (rodinha) do mouse no Menu Prompt
Nunca testei, mas o Harbour tem isso embutido.
Lembro que chegou a usar o menu do AllInOne.
Lá tem isso pronto, não apenas para o menu, mas para o aplicativo inteiro.
Basta usar o HB_GTI_INKEYFILTER
Lembro que chegou a usar o menu do AllInOne.
Lá tem isso pronto, não apenas para o menu, mas para o aplicativo inteiro.
Basta usar o HB_GTI_INKEYFILTER
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Usar wheel (rodinha) do mouse no Menu Prompt
Quintas,
Eu uso o seu modelo de menu nas minhas aplicações particulares, mas aqui na prefeitura, o povo usa o tradicional MENU TO..., quanto a HB_GTI_INKEYFILTER como é que funciona isso ?
Eu uso o seu modelo de menu nas minhas aplicações particulares, mas aqui na prefeitura, o povo usa o tradicional MENU TO..., quanto a HB_GTI_INKEYFILTER como é que funciona isso ?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Usar wheel (rodinha) do mouse no Menu Prompt
Você consegue modificar todo comportamento de Inkey() de uma vez, sem precisar ficar alterando todo aplicativo e todas as rotinas.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Usar wheel (rodinha) do mouse no Menu Prompt
Quintas,
O HB_GTI_INKEYFILTER só funciona com HB_GT_WVG, tentei com HB_GT_WVT não rolou.
O HB_GTI_INKEYFILTER só funciona com HB_GT_WVG, tentei com HB_GT_WVT não rolou.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Usar wheel (rodinha) do mouse no Menu Prompt
Testei aqui, e realmente é isso.
Vai entender.....
Não funciona com console, nem com GTWVT.
Funciona com GTWVG e GTWVW.
Não sei se seria o caso de informar aos developers.
Nos tempos do Clipper eu tinha MyInkey() no lugar de Inkey(), e fazia modificações nela.
Não sei se o SET KEY poderia resolver.
Vai entender.....
Não funciona com console, nem com GTWVT.
Funciona com GTWVG e GTWVW.
Não sei se seria o caso de informar aos developers.
Nos tempos do Clipper eu tinha MyInkey() no lugar de Inkey(), e fazia modificações nela.
Não sei se o SET KEY poderia resolver.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Usar wheel (rodinha) do mouse no Menu Prompt
Plano B, com SET KEY:
Código: Selecionar todos
#include "hbgtinfo.ch"
#include "inkey.ch"
PROCEDURE Main
LOCAL nOpc := 1
SET EVENTMASK TO INKEY_ALL - INKEY_MOVE // + HB_INKEY_GTEVENT ) // está atrapalhando aceitar eventos de GT
SetMode( 25, 80 )
SET KEY K_MWBACKWARD TO MouseWheelDown()
SET KEY K_MWFORWARD TO MouseWheelUp()
CLS
@ 1, 0 PROMPT "primeira"
@ 2, 0 PROMPT "Segunda"
@ 3, 0 PROMPT "Terceira"
@ 4, 0 PROMPT "Quarta"
MENU TO nOpc
RETURN
FUNCTION MouseWheelDown()
KEYBOARD Chr( K_DOWN )
RETURN NIL
FUNCTION MouseWheelUp()
KEYBOARD Chr( K_UP )
RETURN NIL
FUNCTION HB_GTSYS()
REQUEST HB_GT_WVT_DEFAULT
RETURN NIL
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Usar wheel (rodinha) do mouse no Menu Prompt
Aproveitando, já comentei isto antes:
Usando Edge/Windows 10, meus posts de fontes ficam com espacejamento duplo, pulando uma linha a cada linha de fonte.
Minha dúvida é se isso acontece só na minha máquina, quando visualizo meus posts, ou se a visualização fica alterada pra todos.
Aliás... no W10 isso ficou ruim.
Banco Itaú só funciona no explorer.
Certas coisas do google não funcionam nem no Edge, nem no Explorer.
Acabou que tenho Edge, Explorer e Firefox instalados.
Um não substitui o outro.
Usando Edge/Windows 10, meus posts de fontes ficam com espacejamento duplo, pulando uma linha a cada linha de fonte.
Minha dúvida é se isso acontece só na minha máquina, quando visualizo meus posts, ou se a visualização fica alterada pra todos.
Aliás... no W10 isso ficou ruim.
Banco Itaú só funciona no explorer.
Certas coisas do google não funcionam nem no Edge, nem no Explorer.
Acabou que tenho Edge, Explorer e Firefox instalados.
Um não substitui o outro.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Usar wheel (rodinha) do mouse no Menu Prompt
Quintas,
O teu exemplo funcionou com GTWVT.
O teu exemplo funcionou com GTWVT.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Usar wheel (rodinha) do mouse no Menu Prompt
Desafio para entender como funciona.
Com GTWVT não funciona HB_gtInfo( HB_GTI_INKEYFILTER, { | nKey | MyInkeyFilter( nKey ) } ), descobri que fazendo um
SET KEY SET KEY K_MOUSEMOVE TO MouseMove(), consegui farzer "funcionar" só que com o movimento do mouse, ainda não entendi.
Com GTWVT não funciona HB_gtInfo( HB_GTI_INKEYFILTER, { | nKey | MyInkeyFilter( nKey ) } ), descobri que fazendo um
SET KEY SET KEY K_MOUSEMOVE TO MouseMove(), consegui farzer "funcionar" só que com o movimento do mouse, ainda não entendi.
Código: Selecionar todos
SET KEY K_MOUSEMOVE TO MouseMove()
FUNCTION MouseMove()
LOCAL nKey := 0
DO WHILE nKey == 0
nKey := Inkey( .1 )
ENDDO
RETURN Nil
FUNCTION MyInkeyFilter( nKey )
LOCAL nBits, lIsKeyCtrl
nBits := hb_GtInfo( HB_GTI_KBDSHIFTS )
lIsKeyCtrl := ( nBits == hb_BitOr( nBits, HB_GTI_KBD_CTRL ) )
SWITCH nKey
CASE K_ENTER
CASE K_ESC
hwg_MsgInfo("ESC TESTE")
EXIT
CASE K_CTRL_V
IF lIsKeyCtrl
hb_GtInfo( HB_GTI_CLIPBOARDPASTE )
RETURN 0
ENDIF
ENDSWITCH
RETURN nKey
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Usar wheel (rodinha) do mouse no Menu Prompt
Evoluiu para isso:
COM GTWVT a função MyInkeyFilter(), ainda não entendi.
COM GTWVT a função MyInkeyFilter(), ainda não entendi.
Código: Selecionar todos
nIdle := hb_IdleAdd( {|| KeyIntercept() } )
FUNCTION KeyIntercept()
LOCAL nKey := 0
nKey := Inkey()
hb_IdleSleep(.1)
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Usar wheel (rodinha) do mouse no Menu Prompt
O problema está no MENU TO.
Assim como no Clipper, há certas teclas desprezadas por ele.
Deste jeito INKEYFILTER funcionou na GTWVT.
Assim como no Clipper, há certas teclas desprezadas por ele.
Deste jeito INKEYFILTER funcionou na GTWVT.
Código: Selecionar todos
#include "hbgtinfo.ch"
#include "inkey.ch"
PROCEDURE Main
LOCAL nOpc := 1, acOptions := { "primeira", "segunda", "terceira", "quarta" }, oElement, nKey
hb_gtInfo( HB_GTI_INKEYFILTER, { | nKey | MyInkeyFilter( nKey ) } )
SET EVENTMASK TO INKEY_ALL - INKEY_MOVE
SetMode( 25, 80 )
CLS
DO WHILE .T.
FOR EACH oElement IN acOptions
@ oElement:__EnumIndex, 5 SAY oElement COLOR iif( nOpc == oElement:__EnumIndex, "N/W", "W/N" )
NEXT
nKey := Inkey(0)
DO CASE
CASE nKey == K_ESC ; EXIT
CASE nKey == K_ENTER ; EXIT
CASE nKey == K_UP ; nOpc := iif( nOpc == 1, Len( acOptions ), nOpc - 1 )
CASE nKey == K_DOWN ; nOpc := iif( nOpc == Len( acOptions ), 1, nOpc + 1 )
ENDCASE
ENDDO
RETURN
FUNCTION HB_GTSYS()
REQUEST HB_GT_WVT_DEFAULT
RETURN NIL
FUNCTION MyInkeyFilter( nKey )
SWITCH nKey
CASE HB_K_CLOSE ; RETURN K_ESC
CASE K_MWBACKWARD ; RETURN K_DOWN
CASE K_MWFORWARD ; RETURN K_UP
END SWITCH
RETURN nKey
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Usar wheel (rodinha) do mouse no Menu Prompt
Agora pode usar rodinha, ou apenas mexer no mouse.... rs
Código: Selecionar todos
#include "hbgtinfo.ch"
#include "inkey.ch"
PROCEDURE Main
LOCAL nOpc := 1, acOptions := { "primeira", "segunda", "terceira", "quarta" }, oElement, nKey
hb_gtInfo( HB_GTI_INKEYFILTER, { | nKey | MyInkeyFilter( nKey ) } )
SET EVENTMASK TO INKEY_ALL
SetMode( 25, 80 )
CLS
DO WHILE .T.
FOR EACH oElement IN acOptions
@ oElement:__EnumIndex, 5 SAY oElement COLOR iif( nOpc == oElement:__EnumIndex, "N/W", "W/N" )
NEXT
nKey := Inkey(0)
DO CASE
CASE nKey == K_ESC ; EXIT
CASE nKey == K_ENTER ; EXIT
CASE nKey == K_UP ; nOpc := iif( nOpc == 1, Len( acOptions ), nOpc - 1 )
CASE nKey == K_DOWN ; nOpc := iif( nOpc == Len( acOptions ), 1, nOpc + 1 )
ENDCASE
ENDDO
RETURN
FUNCTION HB_GTSYS()
REQUEST HB_GT_WVT_DEFAULT
RETURN NIL
FUNCTION MyInkeyFilter( nKey )
STATIC nMouseRow
IF nMouseRow == NIL
nMouseRow := MRow()
ENDIF
SWITCH nKey
CASE HB_K_CLOSE ; RETURN K_ESC
CASE K_MWBACKWARD ; RETURN K_DOWN
CASE K_MWFORWARD ; RETURN K_UP
CASE K_MOUSEMOVE
IF MRow() < nMouseRow
nMouseRow := MRow()
RETURN K_UP
ENDIF
IF MRow() > nMouseRow
nMouseRow := MRow()
RETURN K_DOWN
ENDIF
END SWITCH
RETURN nKey
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/