Programación General > Visual Basic 6.0 e inferiores
Formato de números en VB6.0.
(1/1)
javiergarciaperez:
Hola.
Estoy haciendo un programa en el que hay dos textbox. Dependiendo de los valores que haya en esos textbox aparece una imagen u otra:
caso 1º) si el textbox1<((textbox2)/2) entonces se ve la imagen 1
caso 2º) si el textbox1=textbox2 entonces se ve la imagen 2
caso 3º) si el textbox1>((textbox2)/2) entonces se ve la imagen 3
El problema que tengo es que mientras el número del textbox1 sea menor que 10 funciona correctamente, pero si es mayor de 10 solo funciona para los dos primeros casos.
¿Me podéis ayudar?
Muchas gracias.
Os mando el código, por si sirve de algo:
Código PHP:
If Text1 = 0 Or Text1 = Text2 Then
Picture71(0).Visible = True
Picture80(0).Visible = True
End If
If Text1 < ((Text2) / 2) And Text1 > 0 Then
Picture71(20).Visible = True
Picture80(5).Visible = True
End If
If Text1 = ((Text2) / 2) Then
Picture71(16).Visible = True
Picture80(4).Visible = True
End If
If Text1 > ((Text2) / 2) And Text1 < Text2 Then
Picture71(24).Visible = True
Picture80(6).Visible = True
End If
Y este es el código de los textos para que solo se puedan meter números:
Código PHP:
Option Explicit
Dim sDecimal As String
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim sCar As String * 1
sCar = Chr(KeyAscii)
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
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
cpmario:
Así es como hay que escribir las preguntas, mostrando el código, ya que es más fácil de entender y contestar.
La siguiente línea tiene un error en la lógica y solo raras veces funcionará. Text1 no puede ser a la vez mayor que Text2 y también menor que Text2 y solo funcionará si comparas el contenido de Text1 y Tex2 como cadenas de texto y no como números, por ejemplo: Text1 = "10" y Text2 = "2", más abajo te explico la razón.
--- Código: Text --- If Text1 > ((Text2) / 2) And Text1 < Text2 Then No es lo mismo comparar texto que números. Cuando comparas texto, si escribes en Text1 "10" y un "2" en Text2 lo siguiente es cierto: Text1 < Text2
Pero si lo anterior lo comparas como valor numérico es falso.
Te sugiero que uses la función Val(Text1) y corrijas la lógica de la línea anterior.
por ejemplo:
--- Código: Text ---If Val(Text1) > Val(Text2) / 2 Then
:comp:
javiergarciaperez:
Gracias por responder.
Lo he solucionado con lo que dices, con la función Val en todos los textbox, lo que pasa que he tenido que poner que la separación decimal se represente siempre con el punto, para que Val no de error.
Gracias. Un saludo.
Navegación
Ir a la versión completa