• Domingo 17 de Noviembre de 2024, 21:34

Autor Tema:  Ciclo en un textbox??  (Leído 3817 veces)

hacker225

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Ciclo en un textbox??
« en: Viernes 29 de Agosto de 2008, 05:54 »
0
hacer un ciclo para validar 49 textbox
lo que pienso hacer es algo mas o menos asi


Código: Text
  1. Public Class Form1
  2.     Dim i As Integer
  3.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.         For i = 0 To 48
  5.             Me.TextBox(i).Text = "hola"
  6.         Next
  7.     End Sub
  8. End Class
  9.  

pero sale error en el Me.TextBox(i).Text = "hola"

alguna idea de como hacerlo

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Ciclo en un textbox??
« Respuesta #1 en: Martes 2 de Septiembre de 2008, 19:18 »
0
pero si tenes un arreglo de textbox ? o solo textbox1,textbox2,textbox3....textbox59 porque tendrian que estar textbox1(0),textbox1(1),textbox1(2)...textbox1(59)
 :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Ciclo en un textbox??
« Respuesta #2 en: Viernes 5 de Septiembre de 2008, 00:21 »
0
Cita de: "hacker225"
 
Código: Visual Basic
  1. Public Class Form1
  2.     Dim i As Integer
  3.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.         For i = 0 To 48
  5.             Me.TextBox(i).Text = "hola"
  6.         Next
  7.     End Sub
  8. End Class
  9.  

Como te dice elNapster si ya tienes los controles metidos en un array te debería funcionar. En vb2005 se han eliminado los arrays ya que chocan frontalmente con el modelo de objetos, no obstante por compatibilidad hacia atrás se incluye y por tanto es posible, como describirlo es un poco engorroso te animo a que tu mismo lo veas, crea un proyecto en VB.60 añade al formulario un array de controles textbox guarda el proyecto y cuierra vb6 ahora abre el proyecto en vb2005 te pedirá ai deseas 'actualizar' el proyecto, respondes que si y listo como sólo tenías esos objetos sin nada más ni código te será fácil ver como se hace para ello tienes que abrir el 'diseñador' del formulario (dale a mostrar todos los archivos para que lo encuentres fácilmente)...

Hay aparte otros 2 métodos igual de sencillos y más asequible de explicar en 4 líneas de código..
El 1º consiste en chequear en todos los controles del formulario si es el texbox deseado... de entrada si tienes pongamos 100 textbox usando la propiedad NAME a los que interese llámalos semejante por ejemplo TextCuenta1, textCuenta2... Textcuenta25... y a otros textbox que no entren en esa línea llámales de forma distinta.. el código sería algo como:
Código: Visual Basic
  1.  
  2.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  3.            msgbox " Se hallaron " & Escribe_Textbox & " textbox con el nombre 'textcuenta'. "
  4.     End sub
  5.  
  6.     private function Escribe_Textbox() as integer
  7.           dim x as integer
  8.           for each c as control in Controls                ' recorre todos los controles en el formulario
  9.                if c is TextBox then                            ' filtramos los que no son textbox
  10.                      if instr(c.name.tolower,"textcuenta")> 0 then     ' filtramos los textbox cuyo patrón (el nombre) no nos interesa, esto debe meditarse antes, o usar otra propiedad.....
  11.                            c.text="Hola cocacola"                 ' hacemos lo que querías....
  12.                            x +=1
  13.                      end if
  14.                end if
  15.          next
  16.         return x
  17.     end function
  18.  
  19.  

El 2º método es muy parecido a éste, y su cometido es evitar recorrer todos los controles del formulario CADA VEZ que deseamos rescribirlos, esto es si tenemos 25 textbox y hay 30 controles en el formulario pués no tiene mucha importancia, pero si tenemos 8 textbox y hay 300 controles en el formulario, pués implica pérdida de tiempo. Para ello lo que hacemos es buscarlos una sóla vez y meterlos en un 'saco', luego cuando queramos escribirlos, vamos al saco y de uno en uno los sacmos y escribimos.... el código sería más o menos

Código: Visual Basic
  1.  
  2.       ' estamod dentro del formulario...
  3.       dim TB as new arraylist
  4.  
  5.       ' dentro del evento load del formulario
  6.              call Ensacar_Textbox    '  el código se mete en una rutina por si necesitamos actualizar la lista que tenemos dentro del saco, eso ocurrirá si eliminamos o deseamos añadir nuevos objetos...
  7.  
  8.         ' esta rutina es casi idéntica a la mostrada en el ejemplo anterior,
  9.         private sub Ensacar_Textbox()          dim x as integer
  10.           for each c as control in Controls                ' recorre todos los controles en el formulario
  11.                if c is TextBox then                            ' filtramos los que no son textbox
  12.                      if instr(c.name.tolower,"textcuenta")> 0 then     ' filtramos los textbox cuyo patrón (el nombre) no nos interesa, esto debe meditarse antes, o usar otra propiedad.....
  13.                           TB.add( c)                  ' abrimos el saco y lo metemos ....
  14.                      end if
  15.                end if
  16.          next
  17.     end sub
  18.  
  19.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  20.         call Escribir_Texto("Hola cocacola")
  21.      end sub
  22.  
  23.      private sub Escribir_Texto(cadena as string)
  24.               dim nTb as new textbox
  25.      
  26.               for k as integer= 0 to TB.count -1    ' contamos los que tenemos en el saco.... esos mismos son los que vamos a 'escribir'
  27.                    nTb=TB.item(k)
  28.                    ntb.text= cadena
  29.               next
  30.      end sub
  31.  
  32.  

listo... ya sólo te queda meter un montón de controles textbbox de nombre (textcuenta, o el que quieras pero adecúalo en el código) otros texbos de otro nombre diferente y otros objetos (botones, label, frame, picture...)   para comprobar que funciona perfectamente.

Saludos....
«Ma non troppo»
----> ModoVacaciones = False<----

hacker225

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Ciclo en un textbox??
« Respuesta #3 en: Martes 16 de Septiembre de 2008, 06:55 »
0
Bueno lo solucione con esto
Código: Text
  1.  
  2. Dim i As Integer
  3. Dim n As Integer = 10
  4.  
  5.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  6.         For i = 0 To 48
  7.             Dim txt As New TextBox
  8.             txt.Text = "TextBox" & i
  9.             txt.Location = New Point(90, n)
  10.             Controls.Add(txt)
  11.             n = n + 25
  12.         Next
  13.     End Sub
  14.  
  15.  

Gracias a todos