https://foro.gambas-es.org/viewtopic.php?f=1&t=1535
-----------------------------------
jesusdaredevil
Domingo, 03 Abril 2011, 18:44

Ayuda Con Ciclo
-----------------------------------
Hola.....!!! soy nuevo jejejejeje Espero me Puedan Ayudar...!

Básicamente lo que quiero es resumir el código de limpieza de un formulario, tengo una función que se llama limpiar


[code linenumbers=false syntax=gambas]PUBLIC SUB limpiar()
  DIM i AS Integer

  TextBox1.Text = ""
  TextBox2.Text = ""
  TextBox3.Text = ""
  TextBox4.Text = ""
  TextBox5.Text = ""
  TextBox6.Text = ""
  TextBox7.Text = ""
  TextBox8.Text = ""
  
END
[/code]
y lo que Quiero Hacer es algo como esto para ahorrar lineas de programación pero no me funciona, alguien sabe que estoy haciendo mal?

[code linenumbers=false syntax=gambas]PUBLIC SUB limpiar()
  DIM i AS Integer

  FOR i = 1 TO 8
    TextBox & Str(i) & .Text = ""
    i = i + 1
  NEXT 
  
END
[/code]
Espero de su Ayuda Gracias de Ante Mano.......!

Nota en la siguiente Linea:

[code linenumbers=false syntax=gambas]
TextBox & Str(i) & .Text = "" '<- me da Este Error: Syntax Error. Point syntax used outside of WITH/END WITH
[/code]


-----------------------------------
Invitado
Domingo, 03 Abril 2011, 21:35

Re: Ayuda Con Ciclo
-----------------------------------
No sé si ya lo han respondido en otro tema, pero puedes hacen un TextBox[], y recorrerlo. Así:

[code linenumbers=true syntax=gambas]Public Sub ClearTxtBoxes()

  Dim hola As TextBox[], i As Integer

  hola = New TextBox[]
  hola = [TextBox1, TextBox2, etc]
  For i = 0 To hola.max
    hola[i].clear()
  Next
  
End[/code]

Ahora bien, si comparten el mismo contenedor, y justamente quieres limpiar todas las de éste...

[code linenumbers=true syntax=gambas]Public Sub ClearTxtBoxes()
  
  Dim i As Integer
  
  For i = 0 To Contenedor.Children.Count - 1
    If (Object.Class(Contenedor.Children[i]).Name = "TextBox") Then
        Object.Call(Contenedor.Children[i], "Clear")   
    Endif
    
  Next
  
End[/code]


-----------------------------------
jesusdaredevil
Lunes, 04 Abril 2011, 01:38

Re: Ayuda Con Ciclo
-----------------------------------
Gracias....!! [b]Ayortano[/b]  :cool:

Aqui te dejo algo que Consegui.... creo que es un poco mas Sencillo....! Salu2....!

[code linenumbers=false syntax=gambas]PRIVATE SUB borrar_textbox(formulario AS form)
  DIM Ctrl AS Object
  'Cada formulario tiene asociada un colección llamada Controls.
  FOR EACH Ctrl IN formulario.Controls
    'En cada iteración a Ctrl le es asignado uno de los elmentos de Controls,
    'es decir una referencia a un control del formulario.
    IF Ctrl IS TextBox THEN Ctrl.Clear  
  NEXT
END SUB
[/code]

y simplemente lo llamo asi:

[code linenumbers=false syntax=gambas]borrar_textbox(senso) 'donde senso es el Nombre del Formulario[/code]


-----------------------------------
jsbsan
Lunes, 04 Abril 2011, 07:16

Re: Ayuda Con Ciclo
-----------------------------------
Interesante solucion....

Saludos


-----------------------------------
Shell
Lunes, 04 Abril 2011, 08:28

Re: Ayuda Con Ciclo
-----------------------------------
Bienvenido a la comunidad.

Pues si, la solución es bastante buena y nos recuerda el uso del For Each que a veces lo tenemos olvidado.
Es perfecto para este caso.


-----------------------------------
Shell
Lunes, 04 Abril 2011, 09:34

Re: Ayuda Con Ciclo
-----------------------------------
Volviendo al ejemplo.

Si declaras la variable objeto Ctrl como TextBox, estas diciendo la clase de objeto que quieres que sea.
A la hora de comparar en el "IF Ctrl is TextBox" en vez de .Clear, puedes ver en la lista desplegable todas las propiedades del control.
En este caso .Clear o .Txt=""

Si lo haces de la otra manera no sabes realmente lo que puedes poner. :wink:


-----------------------------------
Shell
Lunes, 04 Abril 2011, 09:55

Re: Ayuda Con Ciclo
-----------------------------------
Re-contras...

Pues no, si hago eso, me esta pidiendo una caja de texto y le paso un formulario.
Ale, por aprendiz de brujo.

Es que me gusto mucho tu ejemplo.La prisa no es buena consejera.


