Shell 27-01-2023, 20:28
Buenas!.

En este ejemplo se trata de escribir la palabra "gambas" en todas las cajas de texto, evitando
los cambios de foco en los texboxes.

[Imagen: qXHIHKk.png]

Código:
' Gambas class file

'Fuentes
'https://icon-icons.com

Const NUMCAJASDETEXTO As Integer = 4
Const PALABRA As String = "gambas"
Const TIEMPO As Integer = 400 'Cada 400 milisegundos cambia el foco

Private etiqueta1 As Label
Private etiqueta2 As Label
Private cajadetexto As TextBox
Private Timer1 As Timer
Private atextboxes As New TextBox[]
Private indice As Integer

Public Sub Form_Open()

  Dim ocatexto As Object

  Randomize

  With Me
    .Arrangement = Arrange.Vertical
    .Spacing = True
    .Margin = True
    .Padding = 20
    .AutoResize = True
  End With

  etiqueta1 = New Label(Me)
  With etiqueta1
    .Font = Font["Arial, 11, Bold"]
    .Alignment = Align.Center
    .Text = PALABRA
    .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.Left
      .H = 50
      .w = 150
    End With
  Next

  etiqueta2 = New Label(Me)
  With etiqueta2
    .Font = Font["Arial, 11, Bold"]
    .Alignment = Align.Center
    .H = 50
    .W = 150
  End With

  For Each ocatexto In Me.Controls
    If ocatexto Is TextBox Then atextboxes.Add(ocatexto)
  Next

  indice = Rand(0, atextboxes.max)
  atextboxes[indice].SetFocus()

  Timer1 = New Timer As "Reloj"
  Timer1.Delay = TIEMPO
  Timer1.Start


End


Public Sub Reloj_Timer()

  indice += Rand(-1, 1)
  'Si indice es menor que cero
  If indice < 0 Then
    'Asignamos a indice el valor máximo del array de cajas de texto
    indice = atextboxes.Max
    'Si indice supera el valor máximo del array de cajas de texto
  Else If indice > atextboxes.Max
    'Asignamos el indice 0
    indice = 0
  Endif
  'Ponemos el foco en el elemento del array atexboxes con valor indice
  atextboxes[indice].SetFocus()

End

Public Sub Manipula_Change()

  Dim ocatexto As Object
  Dim cuenta As Integer

  For Each ocatexto In Me.Controls
    If ocatexto Is TextBox Then
      'Si los caracteres de la cadena Palabra con longitud de ocatexto es distinto al texto de ocatexto
      If Left(PALABRA, Len(ocatexto.text)) <> ocatexto.text Then
        etiqueta2.Text = "Prueba no superada!"
        Timer1.Stop
        DeshabilitarTextBoxes()
        Stop Event
      Endif
      'Si la cadena que tiene ocatexto es igual a PALABRA entonces cuenta uno más
      If ocatexto.Text = PALABRA Then cuenta += 1
    Endif
  Next

  'Si cuenta es igual al número de cajas de texto
  If cuenta = atextboxes.Count Then
    etiqueta2.text = "Prueba Superada!"
    Timer1.Stop
    DeshabilitarTextBoxes
    Stop Event
  Endif
  cuenta = 0

End

Public Sub DeshabilitarTextBoxes()

  Dim ocatexto As Object

  'Deshabilitamos cada una de las cajas de texto del formulario
  For Each ocatexto In Me.Controls
    If ocatexto Is TextBox Then ocatexto.Enabled = False
  Next

End

Me hubiera gustado usar .Next o .Previous en el evento Timer, pero de la forma que lo hice es más difícil ganar ya que es más aleatorio. Smile
Ah, si, no se usa el ratón. Debería haber deshabilitado el uso de ratón si es que es posible.

Saludos
Archivos adjuntos
.gz
FocoJuego-0.0.1.tar.gz (Tamaño: 13.08 KB Descargas: 1)
Shordi 26-01-2023, 23:44
Acabo de subir una serie de 4 videos cortitos y sencillos sobre la creación de terminales en gambas3 con el control TerminalView del componente gb.form.terminal.
 Ofrece la posibilidad de ver los diferentes terminales en cuadrícula o en pestañas, a elegir y utiliza un formato de ventana copiado (y simplificado) del proyecto gbAmp.
El objetivo era presentar el proyecto "Mute" que he subido a gitlab, que es un Multi Terminal (de ahí lo de mute) que ofrece la posibilidad de ver los diferentes terminales en cuadrícula o en pestañas, a elegir y utiliza un formato de ventana copiado (y simplificado) del proyecto gbAmp, pero me dí cuenta que iba a salir un vídeo demasiado aburrido y largo, así lo he dividido en cuatro y me he saltado toda la paja, dando por supuesto que el que esté interesado en ello ya conoce los elementos básicos de Gambas. Eso sumado a mis titubeos, equivocaciones, toses y tono monocromo, hace de ellos la serie más somnífera y aburrida de Youtube. Cool

Os pongo el enlace a la lista completa:  https://www.youtube.com/playlist?list=PL...CICiPtH4WX

El proyecto Mute, a día de hoy, está sin acabar, tal como lo muestro en el último vídeo de la entrega. En el futuro, y sin prisas quiero terminarlo (configuraciones, fuentes, colores y demás zarandajas) y ya os iré informando de sus avances.

Saludos
Shell 26-01-2023, 13:00
Buenas!.

¿ Habéis podido usar esos métodos ?.

Supongamos que tengo un formulario con distintos controles y uno de ellos tiene el foco. ( A lo mejor no es necesario ).
Y por un momento "he creido" que podría ser posible con esos métodos acceder al control siguiente y al anterior al que
de alguna forma esta seleccionado, tiene el foco, digo yo que será de alguna forma.

La ayuda de Gambas dice que: ( Todos esos métodos pertenecen a la clase control ).

Next : Devuelve el próximo control que tiene el mismo padre
Previous: Devuelve el control anterior que tiene el mismo padre.

Si tengo un formulario con tres botones ( sin más)

Y escribo algo como esto:

Código:
  Print Me.Next

Me.Next es nulo.
¿ Qué puedo haber hecho mal ?.
¿ Cómo puedo usar esos dos métodos ?.

Ey, esto si devuelve algo.

Código:
 Print Button1.Next.Name

Devuelve Button2

Ostras.

Y es que en ese código no se habla del padre de los controles.

Distinto sería que usase esto:

Código:
 Print Button1.Previous.Name

Devolviendo Objeto nulo

¿ Esto se remonta a la jerarquía de controles del formulario o a controles que son de la misma clase ?.

Ya que podía haber añadido después de boton1, textbox1.

Saludos
Páginas (557):    1 215 216 217 218 219 557   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 285
Último miembro: XLRG
Temas del foro: 1,720
Mensajes del foro: 8,934
Últimos temas
Archivos .ods
Foro: General
Último mensaje por: tincho, 01-07-2025, 18:54
Respuestas: 8 - Vistas: 176
Publicidad
Foro: Sobre gambas-es.org
Último mensaje por: tincho, 01-07-2025, 18:48
Respuestas: 6 - Vistas: 313
Web con gambas, a ver si ...
Foro: WebApp/WebForms
Último mensaje por: tincho, 01-07-2025, 17:47
Respuestas: 41 - Vistas: 32,431
Un sistema de ayudas cont...
Foro: Videotutoriales
Último mensaje por: guizans, 22-06-2025, 19:55
Respuestas: 3 - Vistas: 283
Crear una aplicación para...
Foro: Bases de Datos
Último mensaje por: Shell, 29-05-2025, 20:11
Respuestas: 11 - Vistas: 1,425
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.