Spanish xCustomlistview con 3 botones

¿Cómo puedo programar un xCustomlistview con 3 botones, en dónde al presionar un botón cambie una propiedad (color por ejemplo) de los otros 2?

He tratado con algunos ejemplos aquí y en youtube sin lograr que funcionen (Itemclick y Button Click), obteniendo el índice y nada...

Por favor su ayuda iluminando como sería la solución, ya que los 3 botones van a estar dentro de un panel y sólo uno de ellos puede quedar "coloreado" al ser elegido.

P.D. En vez de 3 botones podrían ser 3 etiquetas, cualquiera de estos 2 tipos de controles que puedan disparar el evento Click me serviría.

No adjunto ningún código porque quiero comprender desde cero esta funcionalidad que entrega el xcustomlistview

20240411_161252.gif
 
Solution
Hola:

Descárgate el ejemplo del xCustomListView y échale un vistazo al código.

Te adjunto un ejemplo rápido y simple, lo principal está en:

B4X:
'IMPORTANTE, EN EL VISUAL DESIGNER TIENES QUE CAMBIAR EL NOMBRE DE TODOS LOS EVENTOS PARA QUE SEAN EL MISMO, NO Button1_Click, Button2_Click
Private Sub Button_Click 'Los eventos de todos los botones deben llamarse Button
    Dim button As B4XView = Sender 'Obtenemos el botón que ha llamado al evento
    Dim index As Int = xCLV.GetItemFromView(Sender) 'Obtenemos el indice del CLV que ha sido pulsado
    Dim pnl As B4XView = xCLV.GetPanel(index) 'Obtenemos el panel sobre el que están los botones
    For Each v As B4XView In pnl.GetAllViewsRecursive 'Recorremos todas las vistas del panel...

Filippo

Expert
Licensed User
Longtime User
¿Cómo puedo programar un xCustomlistview con 3 botones, en dónde al presionar un botón cambie una propiedad (color por ejemplo) de los otros 2?

He tratado con algunos ejemplos aquí y en youtube sin lograr que funcionen (Itemclick y Button Click), obteniendo el índice y nada...

Por favor su ayuda iluminando como sería la solución, ya que los 3 botones van a estar dentro de un panel y sólo uno de ellos puede quedar "coloreado" al ser elegido.

P.D. En vez de 3 botones podrían ser 3 etiquetas, cualquiera de estos 2 tipos de controles que puedan disparar el evento Click me serviría.

No adjunto ningún código porque quiero comprender desde cero esta funcionalidad que entrega el xcustomlistview

View attachment 152603
This has nothing to do with xCustomListview.
Create a layout with the 3 buttons and the necessary events and add it to an xCustomListview. That's all you have to do.
 
Upvote 0

josejad

Expert
Licensed User
Longtime User
Hola:

Descárgate el ejemplo del xCustomListView y échale un vistazo al código.

Te adjunto un ejemplo rápido y simple, lo principal está en:

B4X:
'IMPORTANTE, EN EL VISUAL DESIGNER TIENES QUE CAMBIAR EL NOMBRE DE TODOS LOS EVENTOS PARA QUE SEAN EL MISMO, NO Button1_Click, Button2_Click
Private Sub Button_Click 'Los eventos de todos los botones deben llamarse Button
    Dim button As B4XView = Sender 'Obtenemos el botón que ha llamado al evento
    Dim index As Int = xCLV.GetItemFromView(Sender) 'Obtenemos el indice del CLV que ha sido pulsado
    Dim pnl As B4XView = xCLV.GetPanel(index) 'Obtenemos el panel sobre el que están los botones
    For Each v As B4XView In pnl.GetAllViewsRecursive 'Recorremos todas las vistas del panel
        If v.Color = xui.Color_Red And v Is Button Then 'comprobamos que solo sean botones
            v.Color = xui.Color_White
            v.Text = "Text"
        End If
    Next
    button.Color = xui.Color_Red
    button.Text = "click aquí"
End Sub
 

Attachments

  • TestxCLV.zip
    16.5 KB · Views: 17
Last edited:
Upvote 1
Solution
Hola:

Descárgate el ejemplo del xCustomListView y échale un vistazo al código.

Te adjunto un ejemplo rápido y simple, lo principal está en:

B4X:
'IMPORTANTE, EN EL VISUAL DESIGNER TIENES QUE CAMBIAR EL NOMBRE DE TODOS LOS EVENTOS PARA QUE SEAN EL MISMO, NO Button1_Click, Button2_Click
Private Sub Button_Click 'Los eventos de todos los botones deben llamarse Button
    Dim button As B4XView = Sender 'Obtenemos el botón que ha llamado al evento
    Dim index As Int = xCLV.GetItemFromView(Sender) 'Obtenemos el indice del CLV que ha sido pulsado
    Dim pnl As B4XView = xCLV.GetPanel(index) 'Obtenemos el panel sobre el que están los paneles
    For Each v As B4XView In pnl.GetAllViewsRecursive 'Recorremos todas las vistas del panel
        If v.Color = xui.Color_Red And v Is Button Then 'comprobamos que solo sean botones
            v.Color = xui.Color_White
            v.Text = "Text"
        End If
    Next
    button.Color = xui.Color_Red
    button.Text = "click aquí"
End Sub
Muchas gracias @josejad lo voy a probar luego.
 
Upvote 0

Hackito

Member
¿Cómo puedo programar un xCustomlistview con 3 botones, en dónde al presionar un botón cambie una propiedad (color por ejemplo) de los otros 2?

He tratado con algunos ejemplos aquí y en youtube sin lograr que funcionen (Itemclick y Button Click), obteniendo el índice y nada...

Por favor su ayuda iluminando como sería la solución, ya que los 3 botones van a estar dentro de un panel y sólo uno de ellos puede quedar "coloreado" al ser elegido.

P.D. En vez de 3 botones podrían ser 3 etiquetas, cualquiera de estos 2 tipos de controles que puedan disparar el evento Click me serviría.

No adjunto ningún código porque quiero comprender desde cero esta funcionalidad que entrega el xcustomlistview

View attachment 152603
Hola, yo lo haría de esta forma
 

Attachments

  • BotonesX.zip
    12.6 KB · Views: 14
Upvote 0
Hola:

Descárgate el ejemplo del xCustomListView y échale un vistazo al código.

Te adjunto un ejemplo rápido y simple, lo principal está en:

B4X:
'IMPORTANTE, EN EL VISUAL DESIGNER TIENES QUE CAMBIAR EL NOMBRE DE TODOS LOS EVENTOS PARA QUE SEAN EL MISMO, NO Button1_Click, Button2_Click
Private Sub Button_Click 'Los eventos de todos los botones deben llamarse Button
    Dim button As B4XView = Sender 'Obtenemos el botón que ha llamado al evento
    Dim index As Int = xCLV.GetItemFromView(Sender) 'Obtenemos el indice del CLV que ha sido pulsado
    Dim pnl As B4XView = xCLV.GetPanel(index) 'Obtenemos el panel sobre el que están los botones
    For Each v As B4XView In pnl.GetAllViewsRecursive 'Recorremos todas las vistas del panel
        If v.Color = xui.Color_Red And v Is Button Then 'comprobamos que solo sean botones
            v.Color = xui.Color_White
            v.Text = "Text"
        End If
    Next
    button.Color = xui.Color_Red
    button.Text = "click aquí"
End Sub
Muchas gracias @josejad, era lo que precisamente necesitaba.
 
Upvote 0
Top