Spanish Problemas con BetterCustomDialog

JMMF

Member
Licensed User
Longtime User
Hola a todos.
He realizado un módulo clase estándar para introducir los datos, con un DialogsInput y customdialog de Better.
Me funciona de lujo primera especial. PERO el ScrollView2D de customdialog No consigo que se desplaze.
¿Alguien sabe donde estoy metiendo la pata?

Este es el código del módulo clase estándar.
B4X:
Sub Class_Globals
'__________BetterDialogsInput
    Private BetterDialogs1 As BetterDialogs             'Trabajos con Dialogos (Libreria BetterDialogs )
    Private IP As BD_InputBoxParams                'Trabajos con Dialogos (Libreria BetterDialogs )
    Dim MyCursorPantallas As Cursor
    Dim DR As Int
    Dim IP1 As String
'__________BetterDialogsRadioButton
    Private SVCheckBox As ScrollView2D                'Trabajos con ScrollView
    Dim GD As GradientDrawable
    Dim RadioBotonRespuestaTexto, RadioBotonRespuestaPosicion As String
    Dim EsUnico As Boolean
 End Sub

Public Sub Initialize(MySQL As String)
    MyCursorPantallas=Main.MySQLMain.ExecQuery(MySQL)
End Sub

'++++++++++++++++++++ BetterDialogsInput ++++++++++++++++++++++++++++++++++++++++ BetterDialogsInput ++++++++++++++++++++
Public Sub Input(Posicion As Int,Texto As String)
    MyCursorPantallas.Position = Posicion
    IP.Initialize
    IP.Default = Texto                                'Texto
    IP.HintColor = Colors.Red                            'Color de la Insinuación
    IP.InputTextSize = Modulo1.IntToDIP(30)                    'Tamaño de letra del Input
    IP.Gravity = Gravity.CENTER_VERTICAL + Gravity.CENTER_HORIZONTAL    'Horientacion
    IP.Multiline = False                                'Multiples lineas
    IP.QuestionTextSize = Modulo1.IntToDIP(30)                'Tamaño de letra de la Pregunta
    IP.SpaceBetween = 4dip                                'Espacio entre la Pregunta y el Input.
    IP.ValidationCallback = "Input_Validation"                'Validar datos
    IP.WithSuggestions =True                            'Teclado con Sugerencias
    IP.Format = MyCursorPantallas.GetString ("Format")            'Formato
    IP.Hint = MyCursorPantallas.GetString ("Hint")                'Insinuación
    IP.Question = MyCursorPantallas.GetString ("Question")        'Pregunta
    Select MyCursorPantallas.GetString ("Teclado")                'Tipo de teclado
        Case 1 'Numeros con decimales
            IP.InputType = IP.INPUT_TYPE_DECIMAL_NUMBERS
        Case 2 'Numeros
            IP.InputType = IP.INPUT_TYPE_NUMBERS
        Case 3 'Numeros con signos
            IP.InputType = IP.INPUT_TYPE_NUMBERS_WITH_SIGN
        Case 4 'Telefono
            IP.InputType = IP.INPUT_TYPE_PHONE
        Case 5 'Texto
            IP.InputType = IP.INPUT_TYPE_TEXT
        Case 6 'Texto con 1º letra mayuscula
            IP.InputType = IP.INPUT_TYPE_TEXT_WITH_CAPS
    End Select
    
    If MyCursorPantallas.GetString ("Necesario") = "True" And IP.Default = "" Then
        DR = BetterDialogs1.InputBox(MyCursorPantallas.GetString ("Nombre") & " " & Main.TituloAdicionalImput, IP, "Ok", "", "", "")
    Else
        DR = BetterDialogs1.InputBox(MyCursorPantallas.GetString ("Nombre") & " " & Main.TituloAdicionalImput, IP, "Ok", "Cancelar", "", "")
    End If
    If DR = DialogResponse.POSITIVE Then
        IP1 = IP.CompactAnswer.Replace("'","´")
    Else
        IP1 = Texto
    End If
'Me da mucha rabia que el teclado se quede visible, por eso confirmo que se cierra.
    Dim TecladoSoft As IME   
    TecladoSoft.Initialize("")
    TecladoSoft.HideKeyboard
End Sub
'__________Valida el BetterDialogs
Sub Input_Validation(Answer As String, CompactAnswer As String) As String
    If CompactAnswer.Length>MyCursorPantallas.GetString ("Caracteres") Then
        Modulo1.Sonido_Error
        Return CompactAnswer.Length & " Carácteres." & CRLF & "Maximo " & MyCursorPantallas.GetString ("Caracteres") & " carácteres"
    Else If CompactAnswer = "" And MyCursorPantallas.GetString ("Necesario")= "True" Then
        Modulo1.Sonido_Error
        Return "No puede estar vacio"
    Else
        Return ""
    End If
End Sub
'++++++++++++++++++++ BetterDialogsRadioButton ++++++++++++++++++++++++++++++++++++++++ BetterDialogsRadioButton ++++++++++++++++++++
Public Sub CheckBox(L As List, Selecciones As String, Mensage As String)
    If Selecciones = "-1" Then EsUnico = True Else EsUnico = False
'Dimensiona los controles
    Private PnlCheckBox As Panel
    GD.Initialize("TL_BR",Array As Int(Colors.DarkGray,Colors.Black))
    PnlCheckBox.Initialize("PnlCheckBox")
    PnlCheckBox.Height = 100%y
    PnlCheckBox.Width = 100%x
'Dimensiona las posiciones
    Dim Izquierda As Int = 0                'Left
    Dim Arriba As Int = PnlCheckBox.Height /16    'Top
    Dim Ancho As Int = PnlCheckBox.Width/8        'Width
    Dim Alto As Int = PnlCheckBox.Height /16    'Height
'Crea el boton Ok
    Dim btnOK As Button
    btnOK.Initialize("")
    btnOK.Background = GD
    btnOK.Text = "<Font Color='Yellow'>O</Font>K"
    btnOK.TextColor = Colors.White
'Crea el PnlRadioButton
    If L.Size>9 Then
        PnlCheckBox.Height=Alto*9
    Else
        PnlCheckBox.Height=Alto*L.Size
    End If
    PnlCheckBox.Width = Ancho*6
    PnlCheckBox.Background=GD
'Crea los RadioButton
    SVCheckBox.Initialize(PnlCheckBox.Width,L.Size * Alto,"SVCheckbox")
    PnlCheckBox.AddView(SVCheckBox,0%x,0%y,100%x,100%y)
    SVCheckBox.FadingEdges(True)
    Dim CheckBoxSeries(L.Size) As CheckBox
    Arriba = 0
    Dim Cambiar As Int = 0
    For i=0 To L.Size-1
        Dim CheckBox1 As CheckBox
        CheckBox1.Initialize("CheckBox1")
        CheckBox1.Text = "     " & L.Get(i)
        CheckBox1.TextSize = Modulo1.IntToDIP(30)
        CheckBox1.Tag = i
        CheckBox1.TextColor = Colors.White
        CheckBox1.Checked = False
        If EsUnico = False Then
            If Selecciones.IndexOf(i)<>-1 Then CheckBox1.Checked = True
        End If
        If Cambiar = 0 Then CheckBox1.Color=Colors.ARGB(50,0,0,0) Else CheckBox1.Color=Colors.ARGB(100,0,0,0)
        CheckBoxSeries(i)=CheckBox1
        SVCheckBox.Panel.AddView(CheckBox1,Izquierda,Arriba,PnlCheckBox.Width*2,Alto)
        Arriba = Arriba + Alto
        Cambiar = 1 - Cambiar
    Next
'Crea los CustomDlgParams
    Dim dlgParams As BD_CustomDlgParams
    dlgParams.Initialize
    dlgParams.Title = Mensage
    dlgParams.Background = Colors.Transparent
    dlgParams.DialogGravity = Gravity.CENTER_HORIZONTAL + Gravity.CENTER_VERTICAL
    dlgParams.MarginHeight = 1%x
    dlgParams.DialogBody = PnlCheckBox
    dlgParams.BodyWidth = PnlCheckBox.Width
    dlgParams.BodyHeight = PnlCheckBox.Height
    If EsUnico = False Then    dlgParams.PositiveButton = btnOK

    DR = BetterDialogs1.CustomDialog(dlgParams, "CheckBox")
'Rellena las respuestas
    RadioBotonRespuestaTexto = ""
    RadioBotonRespuestaPosicion = ""
    For i=0 To L.Size-1
        If CheckBoxSeries(i).Checked = True Then
            If RadioBotonRespuestaTexto = "" Then
                RadioBotonRespuestaTexto = CheckBoxSeries(i).Text.Trim
                RadioBotonRespuestaPosicion = CheckBoxSeries(i).Tag
            Else
                RadioBotonRespuestaTexto = RadioBotonRespuestaTexto & ":" & CheckBoxSeries(i).Text.Trim
                RadioBotonRespuestaPosicion = RadioBotonRespuestaPosicion & ":" & CheckBoxSeries(i).Tag
            End If
        End If
    Next
End Sub
'__________Controla la tecla ATRÁS
Sub CheckBox_BackKeyPressed As Boolean
    Modulo1.Sonido_Error
    Return True 'Previene la cancelación del diálogo.
End Sub

Sub CheckBox_Closing(DlgResponse As Int) As Boolean
    Return True 'Falso cancelaría el cierre.
End Sub
    
Sub CheckBox1_CheckedChange(Checked As Boolean)
    'Dim RB As CheckBox = Sender
    If EsUnico = True Then
        BetterDialogs1.CloseDialog(DialogResponse.POSITIVE)
    End If
End Sub

Y accedo desde varios módulos de actividad así.
B4X:
                    Lista.Initialize2(Array("XXL","XL","L","M","S","RTS.","SUC."))
                    inputClase1.CheckBox(Lista,Crianza,"Seleccione una familia")
                    LblSeries(Lbl1.Tag).Text = inputClase1.RadioBotonRespuestaTexto
Gracias.
 
Top