Hola.
Estoy Desarrollando Una serie de EDITEX y no Detecta el úntimo, en el evento FocusChanged.
Alguien me podria explicar Porque.
Perdon, no se como se Insertar bien el codigo ...
Un saludo y muchas gracias
Estoy Desarrollando Una serie de EDITEX y no Detecta el úntimo, en el evento FocusChanged.
Alguien me podria explicar Porque.
Perdon, no se como se Insertar bien el codigo ...
B4X:
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
'JMMF
'Compras
End Sub
Sub Globals
Dim GD As GradientDrawable
Dim Id As InputDialog 'Trabaja con libreria Dialogs
Dim Anterior As String
Dim RecuperarFoco As Boolean
Dim A As List
Dim m As Map
Dim ControlLista As List
Dim ControlMapa As Map
Dim IdAnterior As String = ""
Dim Control As Boolean = False
Private EditSerie (11) As EditText
Private Edit As EditText
Private PnlCompras As Panel
Private BotonGuardar As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
CrearLayoutNueva
End Sub
Sub Activity_Resume
Pasillos.Awake.KeepAlive(True) 'la pantalla nunca se para
End Sub
Sub Activity_Pause (UserClosed As Boolean)
Pasillos.Awake.ReleaseKeepAlive 'deja que la pantalla se pueda parar
End Sub
Sub CrearLayoutNueva
'Titulo de Activity
Activity.Title = "Compras"
'Crea el PnlNueva
GD.Initialize("TL_BR",Array As Int(Colors.DarkGray,Colors.Black))
PnlCompras.Initialize("")
PnlCompras.Background=GD
Activity.AddView(PnlCompras,0,0,100%x,100%y)
PnlCompras.Visible=True
'Crea el ControlLista
ControlLista.Initialize
ControlMapa.Initialize
ControlLista.Add(ControlMapa) ' Index(0) es = Nada
ControlMapa.Initialize
ControlMapa.put("Titulo", "Proveedor")
ControlMapa.put("Texto", "Introduzca un nombre de proveedor")
ControlMapa.put("Caracteres", 20)
ControlMapa.put("Hint", "")
ControlLista.Add(ControlMapa)
ControlMapa.Initialize
ControlMapa.put("Titulo", "Id.")
ControlMapa.put("Texto", "Introduzca un Id de bombilla")
ControlMapa.put("Caracteres", 3)
ControlMapa.put("Hint", "A, B1, c9...")
ControlLista.Add(ControlMapa)
ControlMapa.Initialize
ControlMapa.put("Titulo", "Tipo")
ControlMapa.put("Texto", "Introduzca el tipo de bombilla")
ControlMapa.put("Caracteres", 10)
ControlMapa.put("Hint", "Led, Bajo consumo...")
ControlLista.Add(ControlMapa)
ControlMapa.Initialize
ControlMapa.put("Titulo", "Watios")
ControlMapa.put("Texto", "Introduzca los watios de la bombilla")
ControlMapa.put("Caracteres", 4)
ControlMapa.put("Hint", "4w, 6w...")
ControlLista.Add(ControlMapa)
ControlMapa.Initialize
ControlMapa.put("Titulo", "Lúmenes")
ControlMapa.put("Texto", "Introduzca los Lúmenes")
ControlMapa.put("Caracteres", 6)
ControlMapa.put("Hint", "320Lm, 280Lm...")
ControlLista.Add(ControlMapa)
ControlMapa.Initialize
ControlMapa.put("Titulo", "Color")
ControlMapa.put("Texto", "Introduzca el color de la bombilla")
ControlMapa.put("Caracteres", 10)
ControlMapa.put("Hint", "3000k, 4000k...")
ControlLista.Add(ControlMapa)
ControlMapa.Initialize
ControlMapa.put("Titulo", "Angulo")
ControlMapa.put("Texto", "Introduzca el angulo")
ControlMapa.put("Caracteres", 4)
ControlMapa.put("Hint", "90º, 120º...")
ControlLista.Add(ControlMapa)
ControlMapa.Initialize
ControlMapa.put("Titulo", "Cantidad")
ControlMapa.put("Texto", "Introduzca la cantidad de bombillas")
ControlMapa.put("Caracteres", 4)
ControlMapa.put("Hint", "100, 200...")
ControlLista.Add(ControlMapa)
ControlMapa.Initialize
ControlMapa.put("Titulo", "Precio")
ControlMapa.put("Texto", "Introduzca el precio por bombilla")
ControlMapa.put("Caracteres", 4)
ControlMapa.put("Hint", "1.30, 2.00...")
ControlLista.Add(ControlMapa)
ControlMapa.Initialize
ControlMapa.put("Titulo", "Observaciones")
ControlMapa.put("Texto", "Introduzca las observaciones")
ControlMapa.put("Caracteres", 4)
ControlMapa.put("Hint", "")
ControlLista.Add(ControlMapa)
'Crea los label
Dim LabelSerie (11) As Label
For y = 1 To 10
Dim Label As Label
ControlMapa = ControlLista.get (y)
Label.Initialize("Label")
Label.TextSize = 15
Label.TextColor = Colors.LightGray
Label.Color = Colors.Transparent
Label.text = ControlMapa.Get ("Titulo") & " "
If y = 1 Then
Label.Gravity = Gravity.CENTER
PnlCompras.AddView(Label,0%x,0%y,100%x,PnlCompras.Height/13)
else if y = 2 Then
Label.Gravity = Gravity.RIGHT
PnlCompras.AddView(Label,0%x,LabelSerie (y-1).Top + ((LabelSerie (y-1).Height) * 2),PnlCompras.Width/3,PnlCompras.Height/13)
else if y = 10 Then
Label.Gravity = Gravity.CENTER
PnlCompras.AddView(Label,0%x,LabelSerie (y-1).Top + LabelSerie (y-1).Height,100%x,PnlCompras.Height/13)
Else
Label.Gravity = Gravity.RIGHT
PnlCompras.AddView(Label,0%x,LabelSerie (y-1).Top + LabelSerie (y-1).Height,PnlCompras.Width/3,PnlCompras.Height/13)
End If
LabelSerie (y) = Label
Next
'Crea los Edit
For y = 1 To 10
Dim Edit As EditText
ControlMapa = ControlLista.get (y)
Edit.Initialize("Edit")
Edit.TextSize = 15
Edit.TextColor = Colors.White
Edit.Color = Colors.Transparent
Edit.Tag = y
Edit.Hint = ControlMapa.Get ("Hint")
Edit.SingleLine = True
Select y
Case 1 ' Proveedor
Edit.Gravity = Gravity.CENTER
PnlCompras.AddView(Edit,0%x,LabelSerie (1).Top + LabelSerie (1).Height,100%x,PnlCompras.Height/13)
Case 8 ' Cantidad
Edit.InputType = Id.INPUT_TYPE_NUMBERS
Edit.Gravity = Gravity.LEFT
PnlCompras.AddView(Edit,PnlCompras.Width/3,EditSerie (y-1).Top + EditSerie (y-1).Height,PnlCompras.Width/1.5,PnlCompras.Height/13)
Case 9 ' Precio
Edit.InputType = Id.INPUT_TYPE_DECIMAL_NUMBERS
Edit.Gravity = Gravity.LEFT
PnlCompras.AddView(Edit,PnlCompras.Width/3,EditSerie (y-1).Top + EditSerie (y-1).Height,PnlCompras.Width/1.5,PnlCompras.Height/13)
Case 10 ' Observaciones
Edit.Gravity = Gravity.CENTER
PnlCompras.AddView(Edit,0%x,LabelSerie (10).Top + LabelSerie (10).Height,100%x,PnlCompras.Height/13)
Case Else
Edit.Gravity = Gravity.LEFT
PnlCompras.AddView(Edit,PnlCompras.Width/3,EditSerie (y-1).Top + EditSerie (y-1).Height,PnlCompras.Width/1.5,PnlCompras.Height/13)
End Select
EditSerie(y) = Edit
Next
'Crea un BotonGuardar
Dim Bmp As BitmapDrawable
Dim sld As StateListDrawable
BotonGuardar.Initialize("BotonGuardar")
Bmp.Initialize(LoadBitmap(File.DirAssets,"BotonGuardarVerde.png"))
sld.Initialize
sld.AddState(sld.State_Disabled,Bmp)
sld.AddState(sld.State_Enabled,Bmp)
BotonGuardar.Background=sld
PnlCompras.AddView(BotonGuardar,75%x,85%y,45dip,45dip)
EditSerie(1).RequestFocus
End Sub
Sub Edit_FocusChanged (HasFocus As Boolean)
Edit = Sender
If RecuperarFoco = True And Anterior <> Edit.Tag Then Return
RecuperarFoco = False
Anterior=Edit.Tag
'Cuando entra
If HasFocus = True Then
Edit.SelectionStart=Edit.Text.Length
End If
'Cuando sale
If HasFocus = False Then
ControlMapa = ControlLista.get (Edit.tag)
If Edit.text.Length>ControlMapa.Get ("Caracteres") Then
Edit.text = Edit.text.SubString2(0,ControlMapa.Get ("Caracteres"))
BombillasModulo.SonidoSuena
Msgbox(ControlMapa.Get ("Texto") & CRLF & " menor de " & ControlMapa.Get ("Caracteres") & " caracteres",ControlMapa.Get ("Titulo"))
RecuperarFoco =True
Anterior= Edit.Tag
Edit.RequestFocus
Return
Else If Edit.Text.Trim.Length = 0 Then ' Comprueba si tiene algo escrito
BombillasModulo.SonidoSuena
Msgbox(ControlMapa.Get ("Titulo") & CRLF & "No puede ser una cadena vacia",ControlMapa.Get ("Titulo"))
RecuperarFoco =True
Anterior= Edit.Tag
Edit.Text =""
Edit.RequestFocus
Return
Else If ControlMapa.Get ("Titulo") = "Id." Then ' Comprueba no se repita el Id.
Dim m As Map
For i=0 To BombillaNueva.AProveedor.Size -1
m = BombillaNueva.AProveedor.Get(i)
If Edit.Text = m.Get("bdId.") Then
BombillasModulo.SonidoSuena
Msgbox(ControlMapa.Get ("Titulo") & CRLF & "No se puede duplicar","Clave duplicada")
RecuperarFoco =True
Anterior= Edit.Tag
Edit.Text =""
Edit.RequestFocus
Return
Else
EditSerie(Edit.Tag).Text = Edit.Text
End If
Next
Else
EditSerie(Edit.Tag).Text = Edit.Text
End If
End If
End Sub
Sub BotonGuardar_Click
Dim Guardar As Boolean = True
For y = 1 To 10
If EditSerie(y).Text.Trim.Length = 0 Then
Guardar = False
ControlMapa = ControlLista.get (y)
BombillasModulo.SonidoSuena
ToastMessageShow(ControlMapa.Get ("Titulo") & CRLF & "No puede ser una cadena vacia",False)
End If
Next
If Guardar Then
Dim Resultado As Int
Resultado = Msgbox2("¿Guardamos los datos de la nueva compra?", "Guardar", "Si","No","",Pasillos.Imagen(3))
If Resultado = DialogResponse.POSITIVE Then
Compra_Nueva
End If
End If
End Sub
Un saludo y muchas gracias
Last edited: