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

Programar es un arte, es encontrar la forma más rápida y eficaz de solucionar un problema. Quizás  solo la eficaz.
Pero , ¿ cómo podemos mejorar esa habilidad ?. En este vídeo se muestra una serie de consejos que nos
puede interesar conocer.

Del vídeo que parto dio estos tres consejos:

1º Jugar con juegos de lógica, estimular tu cerebro. Ajedrez, puzzles.rompecabezas.
2º Leer libros especializados
3º Practicar.

Como este vídeo es algo más largo, creo que se extiende algo más que el primero.



Buen finde

Saludos
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
Páginas (564):    1 222 223 224 225 226 564   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 292
Último miembro: Nicls_key
Temas del foro: 1,742
Mensajes del foro: 9,027
Últimos temas
Ordenar en un TableView
Foro: General
Último mensaje por: Harpo, Hace 9 horas
Respuestas: 1 - Vistas: 50
Odio a gb.Report
Foro: General
Último mensaje por: guizans, Ayer, 13:36
Respuestas: 9 - Vistas: 1,520
Reportes de Gambas
Foro: Aplicaciones/Fragmentos de Código
Último mensaje por: Alberto59, 27-10-2025, 16:34
Respuestas: 2 - Vistas: 1,321
Ordenando las carpetas
Foro: Programación en otros lenguajes
Último mensaje por: tercoide, 22-10-2025, 15:57
Respuestas: 0 - Vistas: 101
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.