Descargar todos los controles indexados

Iniciado por WHK, 11 Octubre 2009, 01:22 AM

0 Miembros y 1 Visitante están viendo este tema.

WHK

Hola, estaba haciendo una función para poder descargar controles de forma automatizada pero al parecer no me resultó muy bien:

Supongamos que tengo el control text(index) y le hize load por cada item que necesitaba cargar y no precisamente en un orden numérico por lo tanto cuando quiera descargarlos despues no podría utilizar for id = 0 to text.count - 1 sino que tendría que utilizar un for each control in text pero lo hago en varios controles asi que me puse a hacer esta función:

Código (vb) [Seleccionar]
Public Function Descarga_controles(Controles As Controls) As Boolean
Dim Control_item As Control
' Comrpueba que hay mas de un control o sea por lo menos uno cargado
If Controles.Count > 1 Then
 ' Cuenta cada control cargado
 For Each Control_item In Controles
  ' Omite el control padre porque no puede ser eliminado
  If Control_item.Index > 0 Then
   Call Unload(Control_item)
  End If
 Next Control_item
 Descarga_controles = True
Else
 ' No se descargaron los controles ya que no se encontró ninguno
 Descarga_controles = False
End If
End Function


después lo pasé por:
Código (vb) [Seleccionar]
Call Descarga_controles(Check_visual) ' test
MsgBox Check_visual.Count
'If Check_visual.Count > 1 Then
' For Cuenta = 1 To Check_visual.Count - 1
'  Unload Check_visual(Cuenta)
' Next Cuenta
'End If


para poder testear y me lanzó error porque e grupo de controles checkbox no era de tipo controls.
Supuse que controls se referiría a controles varios indexados pero me equiboqué, tampoco puedo decirle controles as checkbox porque tambien necesito procesar textbox e image, etc y no es uno sino varios.

Como podría hacerlo en este caso?

WHK

Bueni, ahi me funcionó:
Código (vb) [Seleccionar]
Public Function Descarga_controles(Controles) As Boolean
Dim Control_item As Control
' Comrpueba que hay mas de un control o sea por lo menos uno cargado
If Controles.Count > 1 Then
  ' Cuenta cada control cargado
  For Each Control_item In Controles
   ' Omite el control padre porque no puede ser eliminado
   If Control_item.Index > 0 Then
    Call Unload(Control_item)
   End If
  Next Control_item
  Descarga_controles = True
Else
  ' No se descargaron los controles ya que no se encontró ninguno
  Descarga_controles = False
End If
End Function


Pero tube que quitarle la declaración del tipo de variable a recibir, no hay alguna forma de si ponerle el tipo para que no pueda aceptar otra cosa que no sean controles?

seba123neo

Hola, dentro del For Each deberias chequear que sea del tipo de control que vos queres asi no pasa por todos...con TypeOf()..algo asi:

Código (vb) [Seleccionar]
    Dim vControl As Control
   
    For Each vControl In Me.Controls
        If TypeOf vControl Is CheckBox Then
           'aca el codigo
        End If
    Next


saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

WHK