USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  DETECTAR PRESSIONAMENTO DO TAB
Roßerto
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 12/11/2007 11:02 hs            
Pessoal, como disse o nosso amigo Donkey, o codigo do João só funciona se vc
não tiver nenhum controle no form, caso contrario não funciona.
mesmo com a propriedade KEYPREVIEW como TRUE.
 
Donkey, vc só vai conseguir capturar o TAB via API.
 
um exemplo:
 

'By default, VB uses the Tab key to move focus between controls.
'To capture the tab key you will need to use
'windows API GetAsyncKeyState

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vVirtKey
As Long) As Integer

Private Function KeyPressed(iKey As Integer) As Boolean
   If GetAsyncKeyState(iKey) < 0 Then
      KeyPressed = True
   Else
      KeyPressed = False
   End If
End Function

Private Sub txtTab_LostFocus()
    If KeyPressed(vbKeyTab) = True Then
        MsgBox "TAB Key Pressed"
    End If
End Sub

Espero que te dê alguma luz para o que vc procura.

Abraços

Roberto

 

 

 

 
   
Roßerto
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 12/11/2007 11:07 hs            
Um outro exemplo:
 
Public Sub HookKB()
If m_hKbHook = 0& Then 'not already hooked
m_hKbHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf
KeyboardProc, 0&, App.ThreadID)
End If
End Sub

Public Sub UnHookKB()
If m_hKbHook <> 0& Then 'not already unhooked
UnhookWindowsHookEx m_hKbHook
m_hKbHook = 0&
End If
End Sub

Private Function KeyboardProc(ByVal Code As Long, ByVal wParam As
Long, ByVal lParam As Long) As Long
On Error Resume Next
If Code < HC_ACTION Then
KeyboardProc = CallNextHookEx(m_hKbHook, Code, wParam, ByVal
lParam)
Else
If wParam = vbKeyTab Then
KeyboardProc = 1& 'eat it
If (lParam And &H80000000) Then
Screen.ActiveForm.Form_KeyUp vbKeyTab, 0
Else
Screen.ActiveForm.Form_KeyDown vbKeyTab, 0
End If
End If
End If
End Function

'=== end bas module ===

'=== form module ===
Public Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyTab Then
'...do whatever...
Debug.Print "KeyDown - Tab"
End If
End Sub

Public Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyTab Then
'...do whatever...
Debug.Print "KeyUp - Tab"
End If
End Sub

Private Sub Form_Load()
HookKB
Me.Show
End Sub

Private Sub Form_Unload(Cancel As Integer)
UnHookKB
End Sub
 
outro exemplo super interessante
 
 
Roberto
TÓPICO EDITADO
 
Ivo
GUARULHOS
SP - BRASIL
ENUNCIADA !
Postada em 12/11/2007 11:11 hs         
Pode crer Roberto
 
testei aqui e não funcionou mesmo só usando API mesmo
valeu cara
abraços
 
   
Donkey
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
PRESIDENTE PRUDENTE
SP - BRASIL
ENUNCIADA !
Postada em 12/11/2007 11:22 hs            
Valeu Roberto. Obrigado pela ajuda.
 
   
DeeJay
não registrado
ENUNCIADA !
Postada em 14/11/2007 09:28 hs   
faz o seguinte:

cria a function (public) em um modulo

Public Sub Manipula_teclas( )
  If KeyCode = vbKeyTab Then
          MsgBox " Pressionado o TAB ! ", vbInformation
  End If
End Sub
e no Evento keyDown de cada controle do seu form coloca o Manipula_teclas
Ex:
Private Sub NOMEDOCONTROLE_KeyDown(KeyCode As Integer, Shift As Integer)
Manipula_teclas
End Sub

Abraços....
   
Donkey
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
PRESIDENTE PRUDENTE
SP - BRASIL
ENUNCIADA !
Postada em 14/11/2007 09:38 hs            
Deejay... acho que vc não leu o tópico ou não testou o seu código. Com certeza não testou, pq no código que vc passou simplesmente vc não passa nenhum argumento na função, então não tem como saber que tecla foi pressionada, mesmo que seu código resolvesse meu problema ele não funcionaria.
 
O Roberto já solucionou meu problema. Obrigado pela intenção.
   
Página(s): 2/2     « ANTERIOR  

CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página