DESABILITAR TECLA TAB SEM USAR OCX

CCRISANEVB 04/08/2010 14:14:35
#349417
Oie. Como poderia desabilitar a tecla TAB em um formulário se usar OCX.
EXPOLETA 04/08/2010 14:23:18
#349418
esse script, eh uma funçaõ, vc devec olk-la no key doen do form.. só q esta aki, troca o enter pelo tab, é so vc pegar o [Ô]asc[Ô] do tab e trocar.

If ((KeyCode = 13) Or (Len(MDIMenu.ActiveForm.ActiveControl.Text) = MDIMenu.ActiveForm.ActiveControl.MaxLength And MDIMenu.ActiveForm.ActiveControl.SelText = [Ô][Ô])) _
And ((KeyCode < 35 Or KeyCode > 40) And (KeyCode <> 8 And KeyCode <> 46)) Then
SendKeys [Ô]{tab}[Ô]
KeyCode = 0#
End If
CCRISANEVB 04/08/2010 14:30:43
#349420
eu quero na verdade é bloquear a tecla testei aqui e não funcionou.
EXPOLETA 04/08/2010 14:44:30
#349421
Private Sub Form_KeyPress(KeyAscii As Integer)
[ô]Primeiro para eliminar o evento do TAB
If KeyAscii = 9 Then [ô]9 é a tecla ASCII do TAB
KeyAscii = 0
End If
[ô]Depois para ativar o Enter, enviando pelo SendKeys o evento TAB
If KeyAscii = 13 Then [ô]13 é a tecla ASCII do Enter
SendKeys [Ô]{Tab}[Ô]
KeyAscii = 0
End If
End Sub
CCRISANEVB 04/08/2010 14:58:44
#349425
Também não funcionou.
IRRV 04/08/2010 15:37:33
#349428
Resposta escolhida
Colocando o propriedade KeyPreview para True, é possível capturar a tecla TAB no evento KeyPress do formulário, SOMENTE quando não existem controles, OU quando um único controle recebe o focu no formulário OU, quando a propriedade TabStop é colocada para False para todos os controles no formulário.

Quando existir mais de um controle no formulário, o VB irá capturar a mensagem e mover o focu para o próximo controle de acordo com a propriedade TabOrder, e o evento KeyPress não será disparado.
O mesmo se aplica para os eventos KeyDown e KeyUp.

No entanto, existe uma forma de saber se a tecla TAB foi pressionada ou não, usando uma API do Windows. Use a função API GetAsyncKeyState em um controle Timer.
Apesar de você conseguir saber quando a tecla TAB foi pressionada, você não conseguirá evitar que o comportamento padrão ocorra (mover para o próximo controle).

[ô] Em um arquivo .BAS

     
Declare Function GetAsyncKeyState% Lib [Ô]User[Ô] (ByVal vKey%)
Global Const KEY_TAB = &H9

[ô] Adicione este código no evento Timer no controle Timer (interval=1).

retn% = GetAsyncKeyState(KEY_TAB)

[ô] o último bit menos significativo será 1 quando a tecla TAB for pressionada
retn% = retn% And 1
If retn% = 1 Then print [Ô]Tecla TAB foi pressionada[Ô]
MICROSCHEME 04/08/2010 18:16:20
#349464
Acredito que a única forma de desabilitar o TAB em um form seja, deixar todos os controles com a propriedade TabStop como
false.

. . .
CCRISANEVB 04/08/2010 21:21:21
#349482
Também pensei assim, só que tem alguns frames e ele ñ possue esta propriedade . Tentei fazer o que o IRRV disse e também não tive resultado
Tópico encerrado , respostas não são mais permitidas