• Domingo 19 de Mayo de 2024, 18:25

Autor Tema:  Formato de textos bloqueados en vb6.0  (Leído 1157 veces)

javiergarciaperez

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Formato de textos bloqueados en vb6.0
« en: Jueves 7 de Agosto de 2008, 19:55 »
0
Hola
Tengo esta operación:
Código: Text
  1. Private Sub Command1_Click()
  2. Text7(0) = ((Val(Text13) * Val(Text1) * Val(Text1)) / 8) + ((Val(Text22) * Val(Text1) * Val(Text1)) / 8) + ((Val(Text31) * Val(Text1) * Val(Text1)) / 8)
  3. End Sub
  4.  
  5.  
y en los textbox text13, text1, text22 y text31 le he puesto el siguiente código:
Código: Text
  1. Option Explicit
  2. Dim sDecimal As String
  3.  
  4. Private Sub Form_Load()
  5.     ' comprueba el formato numérico del sistema
  6.     sDecimal = Format(0.1, "#.#")
  7.     sDecimal = IIf(InStr(sDecimal, ","), ",", ".")
  8. End sub
  9.  
  10. Private Sub Text1_KeyPress(keyascii As Integer)
  11.     Dim sCar As String * 1
  12.     sCar = Chr(keyascii)
  13.    
  14.     If sCar = "." Or sCar = "," Then
  15.         ' comprueba si se ha pulsado coma o punto y lo convierte a punto
  16.         keyascii = IIf(sDecimal = ".", 44, 46)
  17.         sCar = Chr(keyascii)
  18.         ' si ya se ha puesto un punto decimal, no admite otro
  19.         If (InStr(Text1, sCar) > 0) Then
  20.              keyascii = 0
  21.              Exit Sub
  22.         End If
  23.     ElseIf InStr("0123456789.," & Chr(8), sCar) = 0 Then
  24.         ' sólo admite números, signo negativo, punto, coma y retroceso
  25.         keyascii = 0
  26.         Exit Sub
  27.         ' comprueba que el signo menos esté sólo al principio
  28.         ' Nota: Si no queremos negativos, quitar esta condición
  29.     ElseIf sCar = "-" Then
  30.         If InStr(2, "-", Text1) = 0 Then
  31.              keyascii = 0
  32.         End If
  33.     End If
  34. End Sub
  35.  

Con este código solo puedo introducir en los textbox text13, text1, text22 y text31 números, el símbolo -, y el punto (".") como separador de decimales.
El problema que hay es que el resultado de la operación en el text7(0) me sale con separación de decimales la coma (","), y necesito que sea el punto para poder seguir operando con el text7(0), que está bloqueado para que no se pueda escribir sobre él, solo puede aparecer el resultado de la operación anterior.
¿Me podéis ayudar?
Gracias.

cpmario

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Formato de textos bloqueados en vb6.0
« Respuesta #1 en: Jueves 7 de Agosto de 2008, 23:13 »
0
Si las operaciones que estás tratando de hacer deben de corresponder a la Configuración Regional del Sistema.
Entonces tienes un error en el código KeyPress de los controles TextBox.
Debe ser así:
Código: Text
  1.  
  2. Private Sub Text1_KeyPress(KeyAscii As Integer)
  3.     Dim sCar As String * 1
  4.     sCar = Chr(KeyAscii)
  5.     If sCar = "." Or sCar = "," Then
  6.         'comprueba si se ha pulsado coma o punto y lo convierte al formato numérico del sistema
  7.         If sCar <> sDecimal Then
  8.             KeyAscii = Asc(sDecimal)
  9.         End If
  10.         sCar = Chr(KeyAscii)
  11.         ' si ya se ha puesto un punto o coma decimal, no admite otro
  12.         If (InStr(Text1, sCar) > 0) Then
  13.             KeyAscii = 0
  14.             Exit Sub
  15.         End If
  16.     ElseIf InStr("0123456789.," & Chr(8), sCar) = 0 Then
  17.         ' sólo admite números, signo negativo, punto, coma y retroceso
  18.         KeyAscii = 0
  19.         Exit Sub
  20.         ' comprueba que el signo menos esté sólo al principio
  21.         ' Nota: Si no queremos negativos, quitar esta condición
  22.     ElseIf sCar = "-" Then
  23.         If InStr(2, "-", Text1) = 0 Then
  24.             KeyAscii = 0
  25.         End If
  26.     End If
  27. End Sub
  28.  
De otra manera las operaciones que realices tendrán error.

Si lo anterior no es el problema entonces trata con esto en la línea que dices:
Código: Text
  1.     Text7(0) = Format(((Val(Text13) * Val(Text1) * Val(Text1)) / 8) + ((Val(Text22) * Val(Text1) * Val(Text1)) / 8) + ((Val(Text31) * Val(Text1) * Val(Text1)) / 8), "###########.00")
  2.  
  3.  
:comp:

javiergarciaperez

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Formato de textos bloqueados en vb6.0
« Respuesta #2 en: Sábado 16 de Agosto de 2008, 12:35 »
0
Vale gracias. Ya me ha funcionado.