Programación General > Visual Basic 6.0 e inferiores
Formato de textos bloqueados en vb6.0
(1/1)
javiergarciaperez:
Hola
Tengo esta operación:
--- Código: Text ---Private Sub Command1_Click()Text7(0) = ((Val(Text13) * Val(Text1) * Val(Text1)) / 8) + ((Val(Text22) * Val(Text1) * Val(Text1)) / 8) + ((Val(Text31) * Val(Text1) * Val(Text1)) / 8)End Sub y en los textbox text13, text1, text22 y text31 le he puesto el siguiente código:
--- Código: Text ---Option ExplicitDim sDecimal As String Private Sub Form_Load() ' comprueba el formato numérico del sistema sDecimal = Format(0.1, "#.#") sDecimal = IIf(InStr(sDecimal, ","), ",", ".")End sub 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 a punto 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 IfEnd Sub
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:
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 --- 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 numérico del sistema If sCar <> sDecimal Then KeyAscii = Asc(sDecimal) End If sCar = Chr(KeyAscii) ' si ya se ha puesto un punto o coma 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 IfEnd Sub 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 --- 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") :comp:
javiergarciaperez:
Vale gracias. Ya me ha funcionado.
Navegación
Ir a la versión completa