Notifications
Clear all

Como ativar e "travar" o CapsLock em um Form?

10 Posts
2 Usuários
0 Reactions
2,107 Visualizações
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Senhores, tenho um Form com diversos TextBoxs e ComboBox's e gostaria de deixar pré-definido para que quando o usuário desse inicio ao cadastro de clientes, tudo fosse preenchido em letras maiúsculas.
Detalhe, o CapsLock tem que ficar ativado (e travado) assim que o Form fosse aberto e desativado(e liberado) assim que o Form fosse fechado.

Achei alguns exemplos aqui no fórum mais todos eles só com aplicação para planilhas e não para Forms...
Se algum puder dar uma força, agradeço!

Forte abraço senhores!

 
Postado : 13/03/2013 7:38 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Tente...

Option Explicit

Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long

Const VK_CAPITAL = &H14

Sub TurnOn(vkKey As Long)
Dim kbArray As KeyboardBytes

GetKeyboardState kbArray

kbArray.kbByte(vkKey) = 1
SetKeyboardState kbArray
End Sub
Sub TestIt()
TurnOn VK_CAPITAL
End Sub
 
Postado : 13/03/2013 9:29 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Na mosca!
Perfeito meu camarada Alexandre.

Muito Obrigado pela ajuda de sempe!

Forte arbaço

 
Postado : 13/03/2013 11:04 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Alexandre, aproveitando o post: Voce saberia me dizer se existe uma maneira de inutilizar as setas direcionais do teclado CIMA e BAIXO?
Mais somente essas duas! As setas DIREITA e ESQUERDA devem funcionar normalmente.

Pergunto isso pq tenho diversas textboxs e gostaria que a alternância entre elas, acontecesse somente pela tecla TAB

 
Postado : 13/03/2013 11:27 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Ops!

Aconteceu alguma coisa aqui Alexandre!
O código tinha funcionado de primeira mão e agora simplismente desistiu de funcionar rsrsrs
Me tire uma dúvida: O código que vc me passou se divide em 3 partes certo?

Eu tenho que colocar essas três parte em um único módulo?
Ou devo colocar algum deles em um outro lugar...?

 
Postado : 13/03/2013 12:15 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Tente assim.
A ideia seria ao apertar o botão, mudar para maiúscula.

Private Sub CommandButton1_Click()
Dim Ctrl As Control
For Each Ctrl In Me.Controls
        If Ctrl.Tag = "" Then
         Ctrl.Value = UCase(Ctrl.Value)
        End If
    Next Ctrl
    '[A2] = Me.TextBox1.Value
    '[B2] = Me.TextBox2.Value
    '[C2] = Me.TextBox3.Value
End Sub
 
Postado : 13/03/2013 5:30 pm
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Nada cara...
Fiz o teste com esse novo código que vc me passou e ele nem roda.
Tem alguma outra idéia?

 
Postado : 15/03/2013 8:19 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Tem como postar seu arquivo modelo compactado? :?

att

 
Postado : 15/03/2013 9:23 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Prontinho! Esta segue o anexo.

Aquele primeiro cídigo que vc me passou, eu coloquei ele todo no Modulo 3
E esse código que vc me passou por ultimo eu deixei ele de fora pois não conseguir fazer ele funfar...
Lembrando que as letras, aonde os campos tem que ficar todos com as letras em maiúsculas, são lá do Form.

 
Postado : 15/03/2013 10:27 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Nada...?
Eu achei uma outra solução, mais fica meio "porca" por assim dizer...

Seria algo assim:

Private Sub TextBox34_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub

Só que eu teria que criar isso para cada uma das 35 TextBoxs do meu form...
Resolve... porcamente mais resolve!

 
Postado : 18/03/2013 11:34 am