Autor Tema: ¿Cómo obtener datos de un textbox?  (Leído 7114 veces)

0 Usuarios y 1 Visitante están viendo este tema.

NsTeam

  • Kilobyte
  • **
  • Mensajes: 54
  • Reputación: +1/-2
    • Ver Perfil
¿Cómo obtener datos de un textbox?
« en: Diciembre 17, 2011, 02:56:25 am »
Buen día,

(No sé si me expliqué bien en el título). Lo que en sí me gustaría saber es ¿cómo podría obtener el texto dentro de los corchetes de un textbox1 y mostrarlo en un textbox2?

Me explico:

Tengo en un textbox1 el siguiente texto:

Código: [Seleccionar]
había una vez [un perro] que jugaba mucho con [su dueño]
un día [el perro] murió y el cuento acabó.
[fin]

¿Cómo podría hacer para pasar a textbox2 solo el texto dentro de los corchetes y mostrarlo como una lista?

Ejemplo:

Código: [Seleccionar]
un perro
su dueño
el perro
fin

Agradezco sus respuestas.

Gracias.

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:¿Cómo obtener datos de un textbox?
« Respuesta #1 en: Diciembre 17, 2011, 03:24:27 am »
se me ocurre algo asi:

Código: (vb) [Seleccionar]
Private Sub Palabras_Entre_Parentesis(ByVal sText As String)
    Dim oRegExp As Object
    Dim oMatch As Object
    Dim oMatches As Object
   
    Set oRegExp = CreateObject("VBScript.RegExp")
 
    With oRegExp
        .Pattern = "\[(.*?)\]"
        .Global = True
    End With
   
    Set oMatches = oRegExp.Execute(sText)
 
    For Each oMatch In oMatches
        Debug.Print oMatch.Value
    Next
   
    Set oRegExp = Nothing
    Set oMatch = Nothing
    Set oMatches = Nothing
End Sub

Private Sub Form_Load()
    Call Palabras_Entre_Parentesis("había una vez [un perro] que jugaba mucho con [su dueño] un día [el perro] murió y el cuento acabó.[fin]")
End Sub

saludos.

NsTeam

  • Kilobyte
  • **
  • Mensajes: 54
  • Reputación: +1/-2
    • Ver Perfil
Re:¿Cómo obtener datos de un textbox?
« Respuesta #2 en: Diciembre 17, 2011, 01:29:50 pm »
Hola seba123neo, te agradezco por tu código.

Al intentar probarlo me doy cuenta de que no me funcionó :(, o creo que no entendí bien.

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:¿Cómo obtener datos de un textbox?
« Respuesta #3 en: Diciembre 18, 2011, 01:36:00 am »
lo que hace es sacar del mismo texto que vos dijiste, todas las palabras que estan entre parentesis.

lo imprime en la ventana de inmediato del visual basic. (con el Debug.Print).

saludos.

NsTeam

  • Kilobyte
  • **
  • Mensajes: 54
  • Reputación: +1/-2
    • Ver Perfil
Re:¿Cómo obtener datos de un textbox?
« Respuesta #4 en: Diciembre 18, 2011, 01:47:26 am »
Bien, perdón solo he copiado hasta la linea 17  ;D .

Por otro lado cambié el Debug.Print, por un textbox (porque no me funcionaba el Debug.Print), pero en el textbox solo me muestra el último text en [] (osea [fin])

Trate de probar con un Listbox pero aun así no logré hacerlo, ¿Cómo podría hacer para que muestre todas las palabras dentro de los []?
« última modificación: Diciembre 18, 2011, 05:54:43 pm por xkiz ™ »

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:¿Cómo obtener datos de un textbox?
« Respuesta #5 en: Diciembre 18, 2011, 02:29:01 am »
justamente acabo de crear un post, avisando que el codigo se visualiza solo hasta la linea 18 o 19 y despues uno no sabe que abajo sigue el codigo.

para hacer eso es facil simplemente cambiar una linea de codigo. poner un textbox (con nombre Text1) y propiedad Multiline = True.

Código: (vb) [Seleccionar]
Private Sub Palabras_Entre_Parentesis(ByVal sText As String)
    Dim oRegExp As Object
    Dim oMatch As Object
    Dim oMatches As Object
   
    Set oRegExp = CreateObject("VBScript.RegExp")
 
    With oRegExp
        .Pattern = "\[(.*?)\]"
        .Global = True
    End With
   
    Set oMatches = oRegExp.Execute(sText)
 
    For Each oMatch In oMatches
        Text1.Text = Text1.Text & oMatch.Value & vbNewLine
    Next
   
    Set oRegExp = Nothing
    Set oMatch = Nothing
    Set oMatches = Nothing
End Sub
 
Private Sub Form_Load()
    Call Palabras_Entre_Parentesis("había una vez [un perro] que jugaba mucho con [su dueño] un día [el perro] murió y el cuento acabó.[fin]")
End Sub

saludos.

NsTeam

  • Kilobyte
  • **
  • Mensajes: 54
  • Reputación: +1/-2
    • Ver Perfil
Re:¿Cómo obtener datos de un textbox?
« Respuesta #6 en: Diciembre 18, 2011, 02:39:20 am »
Gracias, funciona de maravilla ;)

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Re:¿Cómo obtener datos de un textbox?
« Respuesta #7 en: Diciembre 18, 2011, 04:34:11 pm »
Saludos NsTeam y seba123neo !!! ;D

Yo había hecho algo más o menos así:

Código: (vb) [Seleccionar]
Option Explicit


Private Sub cmdOver_Click()
    End
End Sub

Private Sub cmdOver_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    cmdOver.FontBold = True
End Sub

Private Sub cmdSearch_Click()
    txtResult.Text = ""
    '//
    Dim leftBracketPos As Integer
    Dim rightBracketPos As Integer
    Dim startPoint As Integer
    Dim leftBracket As String
    Dim rightBracket As String
    Dim searchString As String
    Dim bracketedText As String
    '//
    On Error GoTo ErrorsFound
    '//
    leftBracket = "["
    rightBracket = "]"
    startPoint = 1
    searchString = txtSampleText.Text
    '//
    Do
        leftBracketPos = InStr(startPoint, searchString, leftBracket)
        If leftBracketPos = 0 Then Exit Do
        rightBracketPos = InStr(leftBracketPos, searchString, rightBracket)
        bracketedText = Mid(searchString, leftBracketPos + 1, rightBracketPos - (leftBracketPos + 1))
        txtResult.Text = txtResult.Text & bracketedText & vbCrLf
        startPoint = rightBracketPos
    Loop Until leftBracketPos = 0
    '//
    Exit Sub


ErrorsFound:
        If Err.Number = 5 Then
            MsgBox "Es posible que falte un corchete...!!!", vbExclamation + vbOKOnly, "Falta..."
        End If
        Exit Sub
End Sub

Private Sub cmdSearch_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    cmdSearch.FontBold = True
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    cmdSearch.FontBold = False
    cmdOver.FontBold = False
End Sub









Nombres:
- frmSTSearch (Form)
- txtSampleText (TextBox de la Izquierda)
- txtResult (Derecha)
- cmdSearch (Botón "Buscar Texto")
- cmdOver (Botón terminar)

Pero me parece que el de seba123Neo, se ahorra más código, me quedaría con el de él !!!


Saludos.

Manuel F. Borrego S. 8)
Barcelona, Venezuela.
« última modificación: Diciembre 18, 2011, 05:55:31 pm por xkiz ™ »
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!