Foros del Web » Programación para mayores de 30 ;) » Programación General »

Extraer el valor de un TextBox a través de una variable de control

Estas en el tema de Extraer el valor de un TextBox a través de una variable de control en el foro de Programación General en Foros del Web. Tengo esta subrutina que me permite extraer la proiedad "name" de cada "text Box" del formulario Dim controlc For Each controlc In Form2.Controls If (TypeOf ...
  #1 (permalink)  
Antiguo 06/09/2004, 15:06
Avatar de Samaris  
Fecha de Ingreso: enero-2002
Mensajes: 280
Antigüedad: 22 años, 4 meses
Puntos: 0
Pregunta Extraer el valor de un TextBox a través de una variable de control

Tengo esta subrutina que me permite extraer la proiedad "name" de cada "text Box" del formulario
Dim controlc
For Each controlc In Form2.Controls
If (TypeOf controlc Is TextBox) Then
controlc.Enabled = False
A = controlc.name
End If
Next

NECESITO EXTRAER TAMBIEN EL CONTENIDO...
pero si le coloco

A=controlc.text me da error!!

ENTONCES CUAL ES ???
__________________
:corazon:Besos Venezolanos:corazon:
Samaris
  #2 (permalink)  
Antiguo 06/09/2004, 16:16
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
esta rutina la hice yo mira si te sirve y me decis
Código:
Dim a As String
        For Each controlc In Form1.Controls
            If TypeOf controlc Is TextBox Then
                        Me.Enabled = True
                         a = controlc.Name
                        MsgBox controlc.Text
                        MsgBox a
            End If
        Next
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 06/09/2004, 19:02
Avatar de Samaris  
Fecha de Ingreso: enero-2002
Mensajes: 280
Antigüedad: 22 años, 4 meses
Puntos: 0
Ok, gracias
ya lo hice... pero de nuevo cuando llego a donde quiero.. nada
te explico
tengo una serie de textbox a los que le llame f1, f2, f3 y asi sucesivamente a los que quiero darles o tomarles el valor en un ciclo de una vez

pero para hacerme entender dire que solo hay un textbox, cuya propiedad NAME es "f1"

Tengo esta rutina... combinada con lo que me diste.... Claramente muestra el mensaje del NAME y del contenido de cada uno... PERO......

Private Sub Command1_Click()
Dim controlc
Dim A As String
Dim u As String
Dim h As String
Dim l
l = 1
For Each controlc In Form2.Controls
If TypeOf controlc Is TextBox Then
Me.Enabled = True
A = controlc.name
MsgBox A
MsgBox controlc.Text
T = Str(controlc.Text)
If Left(A, 1) = "f" Then
h = Trim("f") + Trim(l) En este momento ya "h" vale "f1"
u = h.Text Y es aqui donde da el error
End If
End If
Next
End Sub

Entonces, como ya tengo una variable que se llama f1 y es justamente como se llama el textbox, ES EN ESTE MOMENTO QUE NECESITO OBTENER EL CONTENIDO... y justo cuando le doy

u=h.text


me sale un error que dice

[CENTER] Calificador no Valido...[/CENTER]
__________________
:corazon:Besos Venezolanos:corazon:
Samaris
  #4 (permalink)  
Antiguo 07/09/2004, 07:14
 
Fecha de Ingreso: abril-2004
Ubicación: Añatuya
Mensajes: 95
Antigüedad: 20 años
Puntos: 0
Cual es el error? que te dice?
__________________
Un angel le dice a Dios - Señor han descifrado el genoma humano - a lo que Dios contesta - Condenados hackers, voy a tener que cambiar la contraseña
  #5 (permalink)  
Antiguo 07/09/2004, 11:14
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
A esta clase de problema, le veo tres soluciones. Una, que ya estabas haciendo, y en la cual no veo cual es la complicación (si defines el tipo de dato correcto, tal ves parezca más claro):
Código:
Private Sub Command1_Click()
Dim iCtrl       As Control
Dim ctrlTxtBox  As TextBox

    'Iteramos en todos los controles del form
    For Each iCtrl In Form1.Controls
        'Si el control es un TextBox
        If TypeOf iCtrl Is TextBox Then
            'Lo asignamos a una variable TextBox
            'Esto hace que el código sea más claro
            '(al menos para mí)
            Set ctrlTxtBox = iCtrl
            'Ya tienes una referencia al control.
            'Si el name cumple con las condiciones que defines,
            'lo usas entonces:
            If Left$(ctrlTxtBox.Name, 1) = "F" Then
                Debug.Print "Name: " & ctrlTxtBox.Name & " " & "Text: " & ctrlTxtBox.Text
            End If
        End If
    Next iCtrl
End Sub
Tambien, puedes usar un array de TextBox, así accederías a las propiedades y métodos del control mediante un índice. Esta es la solución típica en VisualBasic...

O bien, puedes usar un objeto ScriptControl. Si has usado JavaScript o VBScript, habras usado la función Eval(), que dependiendo del string que le pasas como parámetro puede retornar como resultado un objeto, el resultado de una operación, una referencia a una función, el valor de una variable, etc...
Dices que tienes controles TextBox cuyo nombre es f1, f2, f3 ... fn y quieres obtener una referencia al control a partir de un string con el nombre del control segun entiendo. Entonces:

Agrega una referencia a "Microsoft Script Control 1.0", debe de estar en tu sistema, y si no, es descargable y gratuito desde el sitio de Microsoft en Script Control.
Código:
Private Sub Command1_Click()
Dim SC As New ScriptControl 'Un nuevo objeto Script
Dim i As Long

    SC.Language = "VBScript"    '¿Que lenguaje usará?
    '¿Sobre que objetos puede operar?
    'En este caso "Frm" es un alias para Form1 dentro del
    'control Script
    SC.AddObject "Frm", Form1   

    
    For i = 1 To 4      '¿Cuántos de TextBox tienes?
        Debug.Print "Name: " & SC.Eval("Frm.f" & i & ".Name") & " " & _
                    "Text: " & SC.Eval("Frm.f" & i & ".Text")   'El objeto que nos interesa
    Next i
End Sub
Yo lo uso más para evaluar expresiones matemáticas, pero también sirve para este caso.
Saludos.
  #6 (permalink)  
Antiguo 07/09/2004, 19:38
Avatar de Samaris  
Fecha de Ingreso: enero-2002
Mensajes: 280
Antigüedad: 22 años, 4 meses
Puntos: 0
Ok, hare lo que dices!!
gracias por los aportes amigos!!!
__________________
:corazon:Besos Venezolanos:corazon:
Samaris

Última edición por Samaris; 07/09/2004 a las 19:40
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 20:06.