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

Como saber en que control estoy?

Estas en el tema de Como saber en que control estoy? en el foro de Visual Basic clásico en Foros del Web. La cuestión es que tengo una función tal que esta (por ejemplo) Public Function SelecTexto(txt As textbox) txt.SetFocus txt.SelStart = 0 txt.SelLength = Len(txt.Text) End ...
  #1 (permalink)  
Antiguo 04/03/2008, 01:51
 
Fecha de Ingreso: julio-2007
Ubicación: Delante del PC (Barcelona
Mensajes: 157
Antigüedad: 16 años, 9 meses
Puntos: 2
Como saber en que control estoy?

La cuestión es que tengo una función tal que esta (por ejemplo)

Public Function SelecTexto(txt As textbox)
txt.SetFocus
txt.SelStart = 0
txt.SelLength = Len(txt.Text)
End Function

que pasa? que he de poner en cada textbox el nombre de la funcion y su propio nombre. hay alguna manera de que la función recupere el nombre del control? para que no tenga que pasarselo

Última edición por extrem_bcn; 04/03/2008 a las 05:03
  #2 (permalink)  
Antiguo 04/03/2008, 03:08
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Como saber en que control estoy?

Si los TextBox están en un array de controles, no deberías tener ningún problema llamando a la función así:

SelecTexto Text1(Index)

Si no es así, tendrías que craerte una clase que haga eso. p.ej.

En un módulo de clase (Class1.cls)

Código:
Option Explicit

Private WithEvents MiText As TextBox

Public Property Set FormatTxt(SetTextBox As TextBox)
Set MiText = SetTextBox
End Property

Private Sub MiText_GotFocus()
MiText.SelStart = 0
MiText.SelLength = Len(MiText.Text)
End Sub
En el formulario donde se encuentran los TextBox:

Código:
Option Explicit
Private cTextBox As Collection

Private Sub Form_Load()
Dim cClass As Class1, oControl As Control
    
Set cTextBox = New Collection
For Each oControl In Me.Controls
    If TypeOf oControl Is TextBox Then
        Set cClass = New Class1
        Set cClass.FormatTxt = oControl
        cTextBox.Add cClass
    End If
Next
Set cClass = Nothing
Set oControl = Nothing
End Sub
Nota: Siempre que haya mas de un control del mismo tipo en un formulario, es mas práctico crear un array de controles. Tendrás que escribir menos código y ganarás en recursos.
  #3 (permalink)  
Antiguo 04/03/2008, 04:27
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Re: Como saber en que control estoy?

Hola,no hay que hacer tanto quilombo,mira:

Código:
MsgBox Screen.ActiveControl.Name
saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #4 (permalink)  
Antiguo 04/03/2008, 04:44
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Como saber en que control estoy?

Entendido, con eso obtienes el nombre del control que tenga el foco, pero...

¿en qué evento le pasas el valor a la función?

¿no tendrás que hacerlo en todos los TextBox, que es precisamente lo que Extrem_bcn quiere evitar?
  #5 (permalink)  
Antiguo 04/03/2008, 05:35
 
Fecha de Ingreso: julio-2007
Ubicación: Delante del PC (Barcelona
Mensajes: 157
Antigüedad: 16 años, 9 meses
Puntos: 2
Re: Como saber en que control estoy?

muuuuuuuuuuuuuuchisimas gracias a los dos! (por los dos métodos!) sabia que era activecontrol pero no sabia que objeto lo poseia.

Gracias!! y por cierto avellaneda, muy interesante tu clase!
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




La zona horaria es GMT -6. Ahora son las 13:46.