'ValidoNumero() Valida NUMEROS en Editext Numericos
'************************************************************* 20-09-2021 ***
'Rango------> "T"=Todos, "P"=Positivos, "N"=Negativos
'MaxNum-----> Numero Maximo permitido
'MinNum-----> Numero Minimo permitido
'Decimales--> Cantidad Máxima de decimales permitidos
'Old--------> Valor Anterior del editext
'New--------> Valor Nuevo del editext
'edt--------> Vista objeto
'alert------> Muestra carteles (True o False)
Public Sub ValidoNumero(Rango As String, MaxNum As Double, MinNum As Double, Decimales As Int, Old As String, New As String, edt As EditText, alert As Boolean)
If New = "" Then Return 'Si es llamado vacíono hago nada!
Dim nNum As Double
'Veo si es Negativo o Positivo y doy COLOR
Dim cPrimer As String
cPrimer = New.SubString2(0,1) 'Si el primer caracter es "-"
If cPrimer = "-" Then
edt.TextColor = xui.Color_Red
Else
edt.TextColor = xui.Color_White
End If
'Verifico si ya es un NUMERO para comprobar si supera el MAXIMO/MINIMO indicado
If Not (New.Length = 1 And (cPrimer = "-" Or cPrimer = ".")) Then
nNum = New
If nNum > MaxNum Then
If alert Then ToastMessageShow("ATENCION !!!. Ha superado el MAXIMO permitido ["&MaxNum&"].",False) : Main.Beep.beep
edt.Text = Old
edt.SelectionStart = Old.length
End If
If nNum < MinNum Then
If alert Then ToastMessageShow("ATENCION !!!. Ha superado el MINIMO permitido ["&MinNum&"].",False) : Main.Beep.beep
edt.Text = Old
edt.SelectionStart = Old.length
End If
End If
'Verifico por Rango POSITIVO
If Rango = "P" Then
If New = "-" Then 'Verifico que sea POSITIVO (mayor o igual a CERO)
If alert Then ToastMessageShow("ATENCION !!!. Unicamente valores POSITIVOS.",False) : Main.Beep.beep
edt.Text = Old
edt.SelectionStart = Old.length
End If
'Verifico por Rango NEGATIVO
Else If Rango = "N" Then
If Not (New.StartsWith("-")) Then
If alert Then ToastMessageShow("ATENCION !!!. Unicamente valores NEGATIVOS.",False) : Main.Beep.beep
edt.Text = Old
edt.SelectionStart = Old.length
End If
End If
'Verifico cantidad de DECIMALES
Dim k As Int = New.IndexOf(".")
If k > -1 Then
If New.Length - k > (Decimales + 1) Then
If alert Then ToastMessageShow("ATENCION !!!. Máximo " & Decimales & " decimales permitido.",False) : Main.Beep.beep
edt.Text = Old
edt.SelectionStart = Old.length
End If
End If
End Sub