Cuando escribo en un campo de texto la tecla NumLock se me desactiva como
hago para que quede activada, en el evento key press. Y como le desactivo
el pitido cuando le doy enter en cada campo de texto.
Gracias
Hola, Orlando:
Eso es muy raro.
Te dejo un «tip» que tenía a mano para activar/desactivar la tecla del
bloque numérico. Adáptalo a tus necesidades.
El siguiente procedimiento activará/desactivará la tecla del bloque
numérico.
Si deseas comprobar el estado de dicha tecla, debes de llamar previamente a
la función API «GetKeyState», y si ésta devuelve cero (0), significa que la
tecla no está activada, por lo que si deseas activarla, entonces deberás de
utilizar el procedimiento «keybd_event».
Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
Private Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer
'
' El procedimiento activará la tecla del bloque numérico
' si no está activada
'
Public Sub ActivateNumLock()
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Const VK_NUMLOCK = &H90
Dim iNumLock As Integer
' Comprobamos el estado de la tecla virtual perteneciente
' al bloque numérico
iNumLock = GetKeyState(VK_NUMLOCK)
' Si la función devuelve 1, significa que la tecla está
' encendida, por tanto, si devuelve 0, activamos la tecla.
If iNumLock = 0 Then
keybd_event VK_NUMLOCK, vbKeyNumlock, KEYEVENTF_EXTENDEDKEY _
Or 0, 0
keybd_event VK_NUMLOCK, vbKeyNumlock, KEYEVENTF_EXTENDEDKEY _
Or KEYEVENTF_KEYUP, 0
End If
End Sub
Private Sub Command1_Click()
ActivateNumLock
End Sub
> Y como le desactivo el pitido cuando le doy enter en cada
> campo de texto.
>
En el evento «KeyPress» del control de texto, intercepta la tecla «enter», y
estableces a cero el valor del parámetro «KeyAscii»:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
End If
End Sub
Un saludo.
--
Enrique Martínez
[MS MVP - VB]
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As
Long ' TRAE EL ESTADO DE UNA TECLA
Public Declare Function SetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long ' ESTABLECE EL ESTADO DE LAS TECLAS
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan
As Byte, ByVal dwflags As Long, ByVal dwExtraInfo As Long)
'***************************************************************************
******************
'* PRENDE EL NUM LOCK
'***************************************************************************
******************
Public Sub PrendeElNumLock()
If GetKeyState(VK_NUMLOCK) = 0 Then
Select Case frmMain.SysInfo1.OSPlatform
Case 1 'WIN 9X
kbArray.kbByte(VK_NUMLOCK) = 1
SetKeyboardState kbArray
Case 2 'WIN NT
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or
KEYEVENTF_KEYUP, 0
End Select
End If
End Sub
"Orlando Leal" <orlan...@hotmail.com> escribió en el mensaje
news:uTQtkvYc...@TK2MSFTNGP11.phx.gbl...