Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/08/2004, 13:51
Avatar de Beakdan
Beakdan
 
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Podrías usar la API de Windows...
Código:
'Ejemplo basado en documentación de API-Guide http://www.allapi.net/
'A nivel de módulo pon el siguiente código

Const GWL_STYLE = &HFFFFFFF0
Const ES_NUMBER = &H2000&

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Sub SetNumeric(ByRef NumberText As TextBox)
Dim lEstiloAct As Long

    'Obtienes el estilo de la ventana (en este caso cuadro de texto)
    lEstiloAct = GetWindowLong(NumberText.hwnd, GWL_STYLE)
    'Modificas el estilo actual asignándole el flag de estilo Solo-Numérico
    lEstiloAct = lEstiloAct Or ES_NUMBER
    'Asignar al cuadro de texto el nuevo estilo
    SetWindowLong NumberText.hwnd, GWL_STYLE, lEstiloAct
    'Actualizas para que tome el cambio
    NumberText.Refresh
End Sub
Puesto que parece que el campo siempre habrá de recibir números, la anterior función es adecuada. Si quisieras que el campo en algún momento volviera a tomar caracteres alfabéticos, habría que anular el flag, y es sólo una modificación sencilla.

Cuando quieras que algún campo de texto deje de recibir caracteres alfabéticos, simplemente llamas a la función así:

Código:
'Text1 es un campo de texto
SetNumeric Text1
Y no tienes que volver a preocuparte por las letras en tu campo...

Espero que te sirva.
Saludos.