Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: rapbyone en 3 Septiembre 2016, 08:15 am



Título: ¿Cómo saber cual textbox contiene un string igual a otro?
Publicado por: rapbyone en 3 Septiembre 2016, 08:15 am
Amigos míos, solicito su apreciada ayuda: tengo mi formulario de la siguiente manera:

(http://i97.servimg.com/u/f97/14/27/29/04/sin_ty10.png)

A través del command_button Realizo una comprobación entre los 3 texbox de la izquierda, con el textbox de la derecha para saber si el string del text4 se repite en alguno de los textbox de la izquierda a través del siguiente código:

Código
  1. Private Sub Command1_Click()
  2. If Text4.Text = Text1.Text Or Text4.Text = Text2.Text Or Text4.Text = Text3.Text Then
  3. MsgBox "iguales"
  4. End If
  5. End Sub

El tema es que necesito averiguar cual de los 3 de la izquierda es el que tiene el mismo string que el de la derecha, es decir poder obtener el nombre del control que tiene el mismo string.

Se puede hacer de alguna forma??
gracias amigos  ;-)






Título: Re: ¿Cómo saber cual textbox contiene un string igual a otro?
Publicado por: okik en 3 Septiembre 2016, 17:51 pm
Tienes varias maneras:
Sin que tengas que cambiar nada del programa que usas como ejemplo, es meter las palabras en un array y luego comparar y obtener el índice:

Código
  1. Dim Index as Integer
  2. Dim tmpText(1 To 4) As String
  3. tmpText(1) = Text1.Text
  4. tmpText(2) = Text2.Text
  5. tmpText(3) = Text3.Text
  6. tmpText(4) = Text4.Text
  7. For Index = 1 To 3
  8. If tmpText(4) = tmpText(Index) Then
  9. MsgBox ("Texto: " & Index & " está repetido" _
  10. & vbCrLf & "Palabra: " & tmpText(Index))
  11. End If
  12. Next Index



Otra forma  es crear una Matriz de controles, que consiste en crear un control y llamarlo txtPalabra, por ejemplo y en Propiedades del control establecer en la propiedad Index, el valor 0, después copia el control en el formulario y pega de nuevo, automáticamente se crea otro control idéntico con el Index=1, si copias y pegas otro tendrá Index=2....

También puedes copiar y pegar directamente y VB te preguntará si deseas crear una matriz de controles le dices que sí y listo, cada vez que lo copies y pegues se irá añadiendo un índice.

Luego para comparar haces lo siguiente:

Código
  1. Dim Index as Integer
  2. For Index = 0 To 2
  3. If txtPalabra(3).Text = txtPalabra(Index).Text Then
  4. MsgBox ("Texto: " & Index & " está repetido" _
  5. & vbCrLf & "Palabra: " & txtPalabra(Index))
  6. End If
  7. Next Index

El primer control de texto en este caso tiene el Indice = 0
txtPalabra(0)
txtPalabra(1)
txtPalabra(2)
txtPalabra(3)

txtPalabra(3)  sería el cuarto.



Título: Re: ¿Cómo saber cual textbox contiene un string igual a otro?
Publicado por: rapbyone en 3 Septiembre 2016, 17:59 pm
Tienes varias maneras:
Sin que tengas que cambiar nada del programa que usas como ejemplo, es meter las palabras en un array y luego comparar y obtener el índice:

Código
  1. Dim Index as Integer
  2. Dim tmpText(1 To 4) As String
  3. tmpText(1) = Text1.Text
  4. tmpText(2) = Text2.Text
  5. tmpText(3) = Text3.Text
  6. tmpText(4) = Text4.Text
  7. For Index = 1 To 3
  8. If tmpText(4) = tmpText(Index) Then
  9. MsgBox ("Texto: " & Index & " está repetido" _
  10. & vbCrLf & "Palabra: " & tmpText(Index))
  11. End If
  12. Next Index



Otra forma  es crear una Matriz de controles, que consiste en crear un control y llamarlo txtPalabra, por ejemplo y en Propiedades del control establecer en la propiedad Index, el valor 0, después copia el control en el formulario y pega de nuevo, automáticamente se crea otro control idéntico con el Index=1, si copias y pegas otro tendrá Index=2....

También puedes copiar y pegar directamente y VB te preguntará si deseas crear una matriz de controles le dices que sí y listo, cada vez que lo copies y pegues se irá añadiendo un índice.

Luego para comparar haces lo siguiente:

Código
  1. Dim Index as Integer
  2. For Index = 0 To 2
  3. If txtPalabra(3).Text = txtPalabra(Index).Text Then
  4. MsgBox ("Texto: " & Index & " está repetido" _
  5. & vbCrLf & "Palabra: " & txtPalabra(Index))
  6. End If
  7. Next Index

El primer control de texto en este caso tiene el Indice = 0
txtPalabra(0)
txtPalabra(1)
txtPalabra(2)
txtPalabra(3)

txtPalabra(3)  sería el cuarto.



Perfecto amigo, manos a la obra
muchas gracias amigo