DESABILITAR TECLA TAB SEM USAR OCX
Oie. Como poderia desabilitar a tecla TAB em um formulário se usar OCX.
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
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
eu quero na verdade é bloquear a tecla testei aqui e não funcionou.
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
[ô]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
Também não funcionou.
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
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[Ô]
Acredito que a única forma de desabilitar o TAB em um form seja, deixar todos os controles com a propriedade TabStop como
false.
. . .
false.
. . .
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