Comunidad Gambas-es
ocultar o mostrar varios button - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: ocultar o mostrar varios button (/thread-1489.html)



ocultar o mostrar varios button - playmepe - 21-08-2023

Hola a todos, soy un novato, quiero hacerles una consulta, como se hace para ocultar o mostrar varios buttons o paneles a la vez?
como mi ejemplo: button. visible = false pero varios a la vez


RE: ocultar o mostrar varios button - vuott - 21-08-2023

Los Objetos Gráficos, colocados en un Formulario, son "Hijos" (Children) del Contenedor (es decir, el Formulario).
Por lo tanto, tendràs inspeccionar todos los Objetos gráficos "Hijos" del Formulario y verificar que sean "Button".
Si un Objeto gráfico es un "Button", establecerás su Propiedad ".Visible" en "Falso".

Código:
Dim ob As Object

For Each ob In Me.Children
  If Object.Type(ob) = "Button" Then ob.Visible = False
Next



RE: ocultar o mostrar varios button - playmepe - 22-08-2023

Gracias Voutt por tu respuesta, me funciona bién, ahora tengo otra consulta; y si solamente quisiera ocultar algunos por ejemplo tengo 20 buttons y solo quisiera ocultarlo de 10 a 20?


RE: ocultar o mostrar varios button - cogier - 22-08-2023

Ejecute este código en una nueva aplicación gráfica.
Si no le ayuda, por favor publique su código, para que podamos ayudarle mejor.

Código:
oHBox As HBox
oButton As Button
oSpring As Spring
Slider1 As Slider
Label1 As Label
bButtonList As New Button[]

Public Sub Form_Open()
  
  CreateForm
  
End

Public Sub Slider1_Change()
  
  Dim iLoop As Integer
  
  For iLoop = 0 To bButtonList.Max
    If bButtonList[iLoop].Tag > Slider1.Value Then 
      bButtonList[iLoop].Visible = False
    Else 
      bButtonList[iLoop].Visible = True
    Endif
  Next
  
  Me.Text = "Slider1.Value = " & Str(Slider1.Value)
  
End
 1000
Public Sub AllButtons_Click()
  
  Label1.Text = Last.Text
  
End

Public Sub CreateForm()
  
  Dim iBut, iBox, iCount As Integer
  
  With Me
    .Height = 400
    .Width = 750
    .Arrangement = Arrange.Vertical
    .Padding = 15
  End With
  
  With Slider1 = New Slider(Me) As "Slider1"
    .Height = 35
    .Width = 100
    .MaxValue = 20
    .MinValue = 0
    .Mark = True
    .Value = 20
  End With
  
  For iBox = 0 To 4
    With OHBox = New HBox(Me)
      .Height = 25
      .Width = 100
    End With
    
    For iBut = 0 To 3
      With oButton = New Button(oHBox) As "AllButtons"
        Inc iCount
        .Text = "Button" & Str(iCount)
        .Width = 124
        .Height = 35
        .Tag = iCount
      End With
      If iBut < 3 Then oSpring = New Spring(oHbox)
      bButtonList.Add(oButton)
    Next 
  Next
  
  oSpring = New Spring(Me)
  
  With Label1 = New Label(Me) As "Label1"
    .Height = 35
    .Width = 100
    .Alignment = Align.Center
    .Font.Bold = True
    .Text = "Button_Click()"
  End With
  
End



RE: ocultar o mostrar varios button - vuott - 22-08-2023

(22-08-2023, 03:19)playmepe escribió: si solamente quisiera ocultar algunos
Por lo general, puedes operar distinguiendo los "Botones" individuales, haciendo referencia a sus Propiedades (por ejemplo, el nombre ".Name" o su posición .X o .Y en el Formulario, u otras).
Si creas un array de "Button", puedes actuar sobre el índice del array, al que pertenece cada "Button".

Veamos ahora un posible ejemplo actuando sobre la Propiedad ". Name" de los "Button".
El código crea 4 "Button" en el "Form".
Al hacer clic en el "Form", se ocultarán los dos últimos "Button".
Código:
Private butt As Button


Public Sub Form_Open()

  For b As Byte = 0 To 3
    With butt = New Button(Me) As "Boton"
      .W = 100
      .H = 40
      .X = .W * b
      .Y = 200
      .Name = .Name & CStr(b)
' Veamos en console por curiosidad el ".Name" de cada Botón:
Print .Name
    End With
  Next

End

Public Sub Form_MouseUp()

  Dim ob As Object
  
  For Each ob In Me.Children
    If Object.Type(ob) = "Button" Then 
      If Val(Right(ob.Name, 1)) > 1 Then ob.Visible = False
    Endif
  Next

End
Este es simplemente un posible ejemplo  entre muchos.


RE: ocultar o mostrar varios button - playmepe - 23-08-2023

Gracias a todos por su respuesta, me sirvío de mucho sus aportes.