canal visual basic .net

Recursos Visual Basic.NET, VB.NET, Manuales de programación, Tutoriales, Foros de programación, Comunidad de programadores

Usuarios activos:  46

Foros de programación, recursos, tutoriales, sistemas operativos...

Bienvenido a la zona de foros. Participa en alguno de nuestros foros: Foros de visual basic, foros de visual basic.net foros de Crystal reports, foros de C++ - C# , foros de Java, foros de PHP, foros de ASP.net. Seguro que hay un foro que te servirá de gran utilidad y si no lo encuentras avísanos y crearemos uno nuevo.
 

Retroceder   Foro > Recursos y tutoriales > Texto y fuentes de caracteres
 
LinkBack Herramientas Buscar en Tema Desplegado
  #1 (permalink)  
Antiguo 01-Jun-2006, 10:10
Avatar de Anibal
Senior Member
Guru
 
Fecha de Ingreso: 19-December-2005
Ubicación: Spain
Mensajes: 1.269
Predeterminado



Hola a todos:


Después de leer bastantes preguntas sobre este tema, se me ocurrió cómo contemplar todas (creo) las casuísticas que se pueden dar en formatos numéricos al escribir en un TextBox.


No invento nada nuevo, creo en VB ya está todo inventado. Se podría mejorar el código e incluso crear una función pública pasándole los parámetros del Text, tecla pulsada y un booleano si se admiten negativos o no. Bueno, ahí lo dejo por si a alguien le interesa.


Código:
Option Explicit


Dim sDecimal As String


Private Sub Form_Load()
 ' comprueba el formato numérico del sistema
 sDecimal = Format(0.1, "#.#")
 sDecimal = IIf(InStr(sDecimal, ","), ",", ".")
End Sub

y para validar el TextBox:


Código:
Private Sub Text1_KeyPress(KeyAscii As Integer)
 Dim sCar As String * 1
 sCar = Chr(KeyAscii)
 
 If KeyAscii = 13 Then
 ' si se ha pulsado ENTER pasamos el foco al siguiente control
 KeyAscii = 0
 SendKeys "{TAB}"
 Exit Sub
 End If
 If sCar = "." Or sCar = "," Then
 ' comprueba si se ha pulsado coma o punto y lo convierte al
 ' formato del sistema
 KeyAscii = IIf(sDecimal = ",", 44, 46)
 sCar = Chr(KeyAscii)
 ' si ya se ha puesto un punto decimal, no admite otro
 If (InStr(Text1, sCar) > 0) Then
  KeyAscii = 0
  Exit Sub
 End If
 ElseIf InStr("0123456789-.," & Chr(8), sCar) = 0 Then
 ' sólo admite números, signo negativo, punto, coma y retroceso
 ' Nota: Si no queremos negativos, quitar el signo menos de la cadena
 KeyAscii = 0
 Exit Sub
 ' comprueba que el signo menos esté sólo al principio
 ' Nota: Si no queremos negativos, quitar esta condición
 ElseIf sCar = "-" Then
 If InStr(2, "-", Text1) = 0 Then
  KeyAscii = 0
 End If
 End If
End Sub

Saludos


Edited by: Anibal
Responder Citando
  #2 (permalink)  
Antiguo 08-Jul-2007, 13:16
Junior Member
Iniciad@
 
Fecha de Ingreso: 08-July-2007
Ubicación: Peru
Mensajes: 2
Enviar un mensaje por MSN a Paul_Phoenix Enviar un mensaje por Yahoo  a Paul_Phoenix
Predeterminado

buen dato ...



__________________
[/url]
Responder Citando
  #3 (permalink)  
Antiguo 29-May-2009, 04:00
Avatar de HAL9000
Senior Member
Expert@
 
Fecha de Ingreso: 23-February-2009
Ubicación: Spain
Mensajes: 295
Predeterminado



En primer lugar, Anibal, quería darte un millón de gracias por la ayuda que me ha proporcionado este post tuyo.
A raíz de una conversación de ayer en otro post me decidí a programar un OCX que es un textbox con funcionalidades como admitir sólo números, que seandecimales, hexadecimales, binarios; todo en mayúsculas, en minúsculas, filtro de caracteres... etc... (hasta comprobación del DNI español le estoy poniendo... jajaja).
Y lo que encontré más completo para ver ideas para esto de los números fue sin duda tu función: va de maravilla y a la primera.
Pues se me ocurrió una sugerencia, que no una corrección:
Si se cambia la línea:

If InStr(2, "-", Text1) = 0 Then

Por esta otra:

If Text1.SelStart <> 0 Or InStr(Text1.Text, "-") > 0 Then

El signo menos se puede añadir al principio también después de que el usuario haya escrito otros números. En principio me funciona bien, no veo de momento que haya ninguna pega.

Ya sé que es un detallito sin mucha importancia, pero bueno, si a alguien le sirve...
Saludos.
__________________
La doctrina en cuestión es la siguiente: no es deseable creer una proposición cuando no existe fundamento para suponer que sea cierta. [Bertrand Russell]
Responder Citando
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Activado


Temas Similares
Tema Autor Foro Respuestas Último mensaje
BalloonTip sobre Textbox Tino Visual Basic 6.0 4 23-May-2009 17:00
Formatos numericos mgaspoz Visual Basic 6.0 2 11-Aug-2007 16:40
PREGUNTAS SIMPLES SOBRE UN TEXTBOX hander1973 Visual Basic 6.0 3 06-Jun-2007 12:21
MSHFlexGrid y campos numéricos Astro_Mundial Visual Basic 6.0 1 20-Oct-2006 04:31
Imprimir datos númericos Guests Visual Basic 6.0 4 28-Mar-2006 21:38


La franja horaria es GMT +2. Ahora son las 05:26.


Visual Studio .VisualBasic.net .ADO.NET .ASP.NET .Framework .Crystal report
[Visual Basic .NET · Información legal · Condiciones de uso · Publicidad · Contacto · RSS novedades Foro · Inicio]
Un sitio web de Internelia (Ontecnia) © Copyright 2010 canalvisualbasic.net. Todos los derechos reservados