Visual Basic - Puedo hacerlo con un for-next?

Life is soft - evento anual de software empresarial
   
Vista:

Puedo hacerlo con un for-next?

Publicado por digyll (3 intervenciones) el 12/03/2008 01:29:13
Hola!!! tengo esto:

Me.entrada1.Visible = False
Me.entrada2.Visible = False
..
..
Me.entrada20.Visible = False

Puedo hacerlo con un ciclo for-next?? ya lo intenté de todas formas, intentando concatenar...etc, pero me alejé un poco de Visual y perdí práctica. No quisiera usar arrays ya que este código lo mando a llamar de otra herramienta llamada RSView.. y los objetos ya tienen estos nombres.

Me sería de gran ayuda ya que este tipo de bloques los usé mucho por no saber!! ya salí del problema pero quiero también usar funciones para reducirlo (quedaría como a un 15%!)

Me gustaría usar una función con la misma idea:

Sub funcion (n)

Me.entrada[n].Visible = True
Me.salida[n].Visible = False
etc..
etc..

End Sub

Muchas gracias!!! espero puedan ayudarme !! ;)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Puedo hacerlo con un for-next?

Publicado por Antoni Masana (79 intervenciones) el 12/03/2008 12:50:23
Si has creado los objetos sin indice, ahora no puedes hacer referencia a ellos con indices. Pero siempre hay algun truco.

Una opcion seria crear un par de funciones:

' ------------------------------------------------

Sub Function Entra_Act(Num, Tipo)
Select Case Num
case 1: Me.entrada1.Visible = Tipo
case 2: Me.entrada2.Visible = Tipo
....
End Select
End Sub

' ------------------------------------------------

Sub Function Salid_Act(Num, Tipo)
Select Case Num
case 1: Me.salida1.Visible = Tipo
case 2: Me.salida2.Visible = Tipo
....
End Select
End Sub

' ------------------------------------------------

y has esto:

FOR a=1 to 20
Entra_Act (a, True)
Salid_Act (a, False)
NEXT
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Puedo hacerlo con un for-next?

Publicado por digyll (3 intervenciones) el 12/03/2008 17:27:14
Muchas gracias! es un buen truco :) me has dado otras perspectivas. Aunque lo que busco es no escribir tanto, la desventaja es que uso a VB como herramienta auxiliar y pues la que uso como principal lo limita mucho; no he encontrado la forma de ejecutar un comando que llame a una función. Lo he estado haciendo únicamente con eventos.

Te lo agradezco mucho.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Puedo hacerlo con un for-next?

Publicado por romasa (43 intervenciones) el 12/03/2008 17:09:27
Imaginemos que tienes 20 textBox, pues si son solo 20 prueba con esto:

Dim oControl As Control
For Each oControl In Me.Controls
If TypeOf oControl Is TextBox Then
oControl.visible = true
End If
Next

Y listo, pero si tienes mas de 20 textbox, quieres que solo unos cuantos cambien, entonces a los que quieres que cambien en la propiedad TAG ponle un valor en comun como por ejemplo un numero: 1

Dim oControl As Control
For Each oControl In Me.Controls
If oControl.Tag Is "1" Then ' sino funciona con IS pon =
If TypeOf oControl Is TextBox Then
oControl.visible = true
End If
End If
Next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Puedo hacerlo con un for-next?

Publicado por digyll (3 intervenciones) el 18/03/2008 17:33:51
Gracias!!! me desconecté un poco porque tuve que seguir con otra cosa que les preguntaré cuando pueda... de verdad gracias, me ayudaste!! :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar