Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: WHK en 11 Octubre 2009, 01:22 AM

Título: Descargar todos los controles indexados
Publicado por: WHK en 11 Octubre 2009, 01:22 AM
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?
Título: Re: Descargar todos los controles indexados
Publicado por: WHK en 11 Octubre 2009, 01:29 AM
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?
Título: Re: Descargar todos los controles indexados
Publicado por: seba123neo en 11 Octubre 2009, 01:36 AM
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.
Título: Re: Descargar todos los controles indexados
Publicado por: WHK en 11 Octubre 2009, 02:32 AM
genial, no lo conocía, gracias.