• Viernes 8 de Noviembre de 2024, 23:21

Autor Tema:  Formato de números en VB6.0.  (Leído 1459 veces)

javiergarciaperez

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Formato de números en VB6.0.
« en: Domingo 3 de Agosto de 2008, 21:54 »
0
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

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Formato de números en VB6.0.
« Respuesta #1 en: Lunes 4 de Agosto de 2008, 09:30 »
0
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
  1.  If Text1 > ((Text2) / 2) And Text1 < Text2 Then
  2.  
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
  1. If Val(Text1) > Val(Text2) / 2 Then
  2.  

 :comp:

javiergarciaperez

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Formato de números en VB6.0.
« Respuesta #2 en: Lunes 4 de Agosto de 2008, 20:14 »
0
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.