Eventos

12/07/2003 - 05:38 por Jorge A. | Informe spam
Hola a todos.

Mi problema es el siguiente.
Tengo un formulario con 20 controles textbox, entre etiquetas y otros.
Lo que pretendo hacer es programar el evento Gotfocus y el evento LostFocus
de todos los
textbox, dichos eventos ejecutarian exactamente el mismo codigo, hacerlo
para un formulario no seria demasiado inconveniente, pero son 23 formularios
mas, y dado que el codigo es proporcionado por el desarrollador de la
aplicacion origen, para ser personalizado, los textbox tienen diferentes
nombres, con lo cual descarto la posibilidad de utilizar los controles en un
arreglo. Adicionalmente este codigo genera una dll activex, la cual es parte
de toda la aplicacion origen. ¿Existe alguna forma de simplificar este
codigo sin la necesidad de repetirlo en todos los formularios y programar
dichos eventos para cada textbox?
Cualquier sugerencia o comentario al respecto sera bienvenida.

Gracias de antemano.
 

Leer las respuestas

#1 Softjaen
12/07/2003 - 23:41 | Informe spam
"Jorge A." escribió:

Tengo un formulario con 20 controles textbox, entre etiquetas y otros.
Lo que pretendo hacer es programar el evento Gotfocus y el evento
LostFocus de todos los textbox, dichos eventos ejecutarian
exactamente el mismo codigo, ..., los textbox tienen diferentes
nombres, con lo cual descarto la posibilidad de utilizar los controles en


un
arreglo. Adicionalmente este codigo genera una dll activex, la cual es


parte
de toda la aplicacion origen. ¿Existe alguna forma de simplificar este
codigo sin la necesidad de repetirlo en todos los formularios y programar
dichos eventos para cada textbox?



Hola, Jorge:

Si no quieres utilizar un "arreglo", lo único que se me ocurre es que crees
un procedimiento en un módulo *.bas, donde le pases por referencia el nombre
del control «TextBox» que deseas utilizar con los eventos «GotFocus» y
«LostFocus»:

Formulario
Private Sub Text1_GotFocus()
TextGotFocus Text1
End Sub

Private Sub Text1_LostFocus()
TextLostFocus Text1
End Sub


Módulo *.BAS
Public Sub TextGotFocus(CtrlText As TextBox)
MsgBox "El foco está en el control " & _
CtrlText.Name
End Sub

Public Sub TextLostFocus(CtrlText As TextBox)
MsgBox "El foco está en el control " & _
CtrlText.Name
End Sub

Depende de lo que hagan los eventos comentados, puedes simplificar más el
código utilizando un sólo procedimiento para los dos eventos:

Public Sub TextGotLostFocus(CtrlText As TextBox)
MsgBox "El foco está en el control " & _
CtrlText.Name
End Sub

Un saludo.

Enrique Martínez
[MS MVP - VB]

Preguntas similares