Spanish [EJEMPLO] Modificar un Label dentro de una lista de paneles.

droman

Member
Licensed User
Empezó como una consulta a un problema... pero ya está resuelto.

Por si alguien no sabe como hacerlo, o le interesa... lo dejo a modo de código de ejemplo.

Sirve para crear dinámicamente en tiempo de ejecución, un panel que contiene labels y botones con la información de un objeto de un inventario.

Espero que os sirva de algo. :)


B4X:
Sub Crear_Objeto( Serie As String, Titulo As String, Contenido As String)

    Dim Panel_Objeto As Panel
    Dim lblSerie As Label
    Dim lblTitulo As Label
    Dim lblNum As Label
    Dim btnContenido As Button
    Dim btnBorrar As Button
    Dim btnObservaciones As Button
    Dim ScreenWidth As Int
    ScreenWidth = GetDeviceLayoutValues.Width

    #region N.Inventario
        
    Panel_Objeto.Initialize("")
    Panel_Objeto.Color=Colors.DarkGray

    lblSerie.Initialize("")
    lblSerie.Text=NumberFormat2(Serie,4,0,0,False)
    lblSerie.TextSize = 20
    lblSerie.TextColor=Colors.White
    lblSerie.Color=Colors.Blue
    lblSerie.Gravity=Gravity.CENTER_HORIZONTAL + Gravity.CENTER_VERTICAL
    Panel_Objeto.AddView(lblSerie,5dip,5dip,60dip,35dip)
 
    #end region
            
    #region Titulo

    lblTitulo.Initialize("")
    lblTitulo.Text=" " & Titulo
    lblTitulo.TextSize = 14
    lblTitulo.TextColor=Colors.White
    lblTitulo.Color=Colors.Black
    lblTitulo.Gravity=Gravity.LEFT + Gravity.CENTER_VERTICAL
    Panel_Objeto.AddView(lblTitulo,70dip,5dip,260dip,35dip)

    
    #end region

    #region Boton_Contenido

    btnContenido.Initialize("btnContenido")
    btnContenido.Text="Contenido"
    btnContenido.Tag=Serie
    Panel_Objeto.AddView(btnContenido,5dip,45dip,85dip,35dip)


    #end region


    ....
     
 
    Paneles.Add(Panel_Objeto)
    NPaneles = NPaneles + 1

    CrearListado

End Sub

Una vez creados los paneles y almacenados en la lista Paneles, el usuario puede borrar uno de los paneles... con lo que toca cambiar todas las etiquetas de número de panel y el tag al botón borrar.

Para acceder a los paneles, después de haber borrado uno, lo hago de la siguiente forma:

B4X:
Sub CrearListado
    Dim numpanel As Int = 0

    Panel_main.Panel.RemoveAllViews
    
    For Each p As Panel In Paneles
        'Dim panel As Panel
        'panel=p
        Dim Numero As Label
        Dim borrar As Button
           
        borrar = p.GetView(4)
        borrar.Tag = numpanel

        Numero = p.GetView(5)
        Numero.Text="#" & NumberFormat2(numpanel,2,0,0,False)
     
        Panel_main.Panel.AddView(p,2%x,(1%y+(85dip*numpanel)),96%x,80dip)
        numpanel = numpanel + 1
        Panel_main.Panel.Height = 85dip*numpanel
    Next
    Panel_main.Panel.Height = Panel_main.Panel.Height + 5dip
    Panel_main.Invalidate
End Sub
 
Last edited:
Top