Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Añadir funcionalidad a todos los textBox de un programa

Estas en el tema de Añadir funcionalidad a todos los textBox de un programa en el foro de Visual Basic clásico en Foros del Web. Hola a todos, Tengo un programa con varios Forms y unos cuantos textbox... Me acabo de dar cuenta, de que tengo que cambiar el color ...
  #1 (permalink)  
Antiguo 12/09/2011, 13:44
 
Fecha de Ingreso: mayo-2010
Ubicación: Belgica
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 2
Añadir funcionalidad a todos los textBox de un programa

Hola a todos,
Tengo un programa con varios Forms y unos cuantos textbox...
Me acabo de dar cuenta, de que tengo que cambiar el color del fondo de los textbox al recibir el FOCO.

Hay alguna manera de añadir esa funcionalidad a todos los textbox sin ir uno a uno??

Gracias
Saludos
  #2 (permalink)  
Antiguo 13/09/2011, 08:43
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 15 años, 2 meses
Puntos: 47
Respuesta: Añadir funcionalidad a todos los textBox de un programa

Hola!!
Pues se me ocurrió esto:
• Pones en la propiedad "TAG" de cada TextBox el valor "txt" (sin comillas)
• Agregas un Timer al Form, con su propiedad "INTERVAL" en 60 y agregas el codigo:

Código vb:
Ver original
  1. Private Sub Timer_Timer()
  2.     For Each Control In Form1.Controls
  3.         If Control.Tag = "txt" Then
  4.             If Control.Text <> Empty Then
  5.                 Control.BackColor = &HC0FFC0
  6.             Else
  7.                 Control.BackColor = &HFFFFFF
  8.             End If
  9.         End If
  10.     Next
  11. End Sub

Todos los TexBox que tengan la propiedad TAG=txt, obtendrán un color al momento que se DIGITE algo en ellos o si TIENEN algun valor, pero no ocurrirá con el GOTFOCUS
  #3 (permalink)  
Antiguo 13/09/2011, 12:09
 
Fecha de Ingreso: mayo-2010
Ubicación: Belgica
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Añadir funcionalidad a todos los textBox de un programa

Hola, gracias por tomarte la molestia de contestarme (no es muy habitual en este foro por lo que veo..).

Te comento, el problema esque eso tendría que ponerlo en todos los forms que tengo... y el problema de los timers es que gastan mucho CPU.

Yo lo que busco realmente es algo que se aplique a todos los textbox de un programa( con varios forms ) una sola vez al ejecutar el programa...

se podria hacer con un modulo o algo parecido?

Gracias
  #4 (permalink)  
Antiguo 13/09/2011, 22:54
Usuario no validado
 
Fecha de Ingreso: junio-2010
Ubicación: Guatemala
Mensajes: 196
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: Añadir funcionalidad a todos los textBox de un programa

Saludos, estoy algo oxidado en VB6 pero puedes utilizar algo como esto (aún le falta que lo pulas)

Partimos de un proyecto Nuevo

Crea una nueva clase llamada clsAdvancedTextBox y añade el siguiente código:
Código vb:
Ver original
  1. Option Explicit
  2.  
  3. Public WithEvents txtBox As TextBox
  4.  
  5. Private Sub Class_Terminate()
  6.     Set txtBox = Nothing
  7. End Sub
  8.  
  9. Private Sub txtBox_GotFocus()
  10.     txtBox.BackColor = vbRed
  11. End Sub
  12.  
  13. Private Sub txtBox_LostFocus()
  14.     txtBox.BackColor = vbWindowBackground
  15. End Sub

Añade otra clase llamada clsAdvancedTextBoxCollection y añade el siguiente código:
Código vb:
Ver original
  1. Option Explicit
  2.  
  3. Private c As Collection
  4.  
  5. Public Sub AddTextBox(ByRef frmValue As Form)
  6.     Dim txtBox As clsAdvancedTextBox
  7.     Dim xControl As Control
  8.    
  9.     For Each xControl In frmValue.Controls
  10.         If TypeOf xControl Is TextBox Then
  11.             Set txtBox = New clsAdvancedTextBox
  12.             Set txtBox.txtBox = xControl
  13.             c.Add txtBox, xControl.Name
  14.         End If
  15.     Next
  16. End Sub
  17.  
  18. Private Sub Class_Initialize()
  19.     Set c = New Collection
  20. End Sub
  21.  
  22. Private Sub Class_Terminate()
  23.     Set c = Nothing
  24. End Sub

Teniendo ya las clases, procedemos a agregar varios textbox al formulario, luego añade el siguiente código al Form1
Código vb:
Ver original
  1. Option Explicit
  2.  
  3. Dim clsTextBoxCollection As clsAdvancedTextBoxCollection
  4.  
  5. Private Sub Form_Load()
  6.     Set clsTextBoxCollection  = New clsAdvancedTextBoxCollection
  7.     clsTextBoxCollection.AddTextBox Form1
  8. End Sub
  9.  
  10. Private Sub Form_Unload(Cancel As Integer)
  11.     Set clsTextBoxCollection  = Nothing
  12. End Sub

Cuando ejecutes el programa, te podrás dar cuenta que al recibir el foco en alguno de los textbox, su color de fondo será de color rojo :).

Espero que te haya sido de utilidad, y como te mencione a la clase le hace falta mas trabajo, simplemente tiene lo necesario para funcionar.


Última edición por JonathanB; 13/09/2011 a las 23:04
  #5 (permalink)  
Antiguo 17/09/2011, 07:56
 
Fecha de Ingreso: mayo-2010
Ubicación: Belgica
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: Añadir funcionalidad a todos los textBox de un programa


Eres un crack, ha funcionado.

bueno ahora me toca entender el codigo... :p

Muchas gracias.

Etiquetas: funcionalidad, programa, textbox
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:08.