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

[0] Índice de Mensajes

Ir a la versión completa