' Gambas class file
'Se pretende que todas las cajas de texto contenga la misma cadena que la etiqueta
'Sin importar el número de cajas de texto que se use
Const NUMCAJASDETEXTO As Integer = 3
Const TEXTO As String = "prueba"
Private cajas As New Integer[]
Private etiqueta1 As Label
Private etiqueta2 As Label
Private cajadetexto As TextBox
Public Sub Form_Open()
With Me
.Arrangement = Arrange.Vertical
.Width = 200
.Spacing = True
.Margin = True
.AutoResize = True
End With
etiqueta1 = New Label(Me)
With etiqueta1
.Font = Font["Arial, 24, Bold"]
.Alignment = Align.Center
.Text = TEXTO
.H = 50
.W = 150
End With
For j As Integer = 0 To NUMCAJASDETEXTO - 1
cajadetexto = New TextBox(Me) As "Manipula"
With cajadetexto
.Font = Font["Arial, 18, Bold"]
.Alignment = Align.Center
.H = 50
.w = 150
.Tag = j
End With
Next
etiqueta2 = New Label(Me)
With etiqueta2
.Font = Font["Arial, 20, Bold"]
.Alignment = Align.Center
.Text = ""
.H = 50
.W = 150
End With
End
Public Sub Manipula_Change()
Dim ocajadetexto As Object
'Comprueba cada cambio en las cajas de texto
For Each ocajadetexto In Me.Controls
If ocajadetexto Is TextBox Then
If Last.text = etiqueta1.Text Then
If cajas.Find(Last.tag) = -1 Then cajas.Add(Last.tag)
If cajas.Count = NUMCAJASDETEXTO Then
etiqueta2.text = "Son iguales"
Else
etiqueta2.Text = ""
Endif
Else
etiqueta2.Text = ""
Endif
Endif
Next
End
Public Sub Manipula_KeyPress()
'Comprueba si se ha pulsado la tecla de retroceso o borrar
If Key.code = Key.Backspace Or Key.Code = Key.Delete Then
'Si el tag de la caja de texto donde se escribe se encuentra en cajas
If cajas.Find(Last.tag) <> -1 Then
'Elimina el tag de cajas
cajas.Remove(cajas.Find(Last.tag))
'Limpia el contenido de la etiqueta2
etiqueta2.Text = ""
Endif
Endif
End
(25-01-2023, 02:09)Shordi escribió: No entiendo el propósito de tanto tejemaneje con el .tag de los textboxes ¿Por qué no preguntar por el .text y ya está?
Const NUMCAJASDETEXTO As Integer = 3
Const TEXTO As String = "prueba"
Private etiqueta1 As Label
Private etiqueta2 As Label
Private cajadetexto As TextBox
Public Sub Form_Open()
With Me
.Arrangement = Arrange.Vertical
.Width = 200
.Spacing = True
.Margin = True
.AutoResize = True
End With
etiqueta1 = New Label(Me)
With etiqueta1
.Font = Font["Arial, 24, Bold"]
.Alignment = Align.Center
.Text = TEXTO
.H = 50
.W = 150
End With
For j As Integer = 0 To NUMCAJASDETEXTO - 1
cajadetexto = New TextBox(Me) As "Manipula"
With cajadetexto
.Font = Font["Arial, 18, Bold"]
.Alignment = Align.Center
.H = 50
.w = 150
.Tag = j
End With
Next
etiqueta2 = New Label(Me)
With etiqueta2
.Font = Font["Arial, 20, Bold"]
.Alignment = Align.Center
.Text = ""
.H = 50
.W = 150
End With
End
Public Sub Manipula_Change()
Dim ocajadetexto As Object
Dim cuenta As Integer
For Each ocajadetexto In Me.Controls
If ocajadetexto Is TextBox Then
If ocajadetexto.text = etiqueta1.Text Then cuenta += 1
Endif
Next
If cuenta = NUMCAJASDETEXTO Then
etiqueta2.Text = "Son iguales"
Else
etiqueta2.Text = ""
Endif
cuenta = 0
End
For Each ocajadetexto In Me.Controls
If ocajadetexto Is TextBox Then
If ocajadetexto.text = etiqueta1.Text Then cuenta += 1
Endif
Next
(25-01-2023, 23:12)Shordi escribió: Eso se parece mucho más a lo que yo había pensado. Es el eterno principio de KISS.