martes, 2 de septiembre de 2014

Break

Ejemplo simple de como usar Break.



' gambas class file

'by postapase
'usando Break

Public ArrayDeNumeros As New Integer[] 'declaramos un array
' que contendra solo números (tipo integer)y lo inicializamos con New

Public Sub Form_Open()
Dim x As Integer 'declaramos una variable de tipo numerico llamada x para el bucle

Me.Center 'centra el formulario en referencia al escritorio

For x = 1 To 9999 'bucle que agregará al array numérico llamado ArrayDeNumeros los números del 1 al 9999
ArrayDeNumeros.Add(x) ' add lo que hace es agregar el número que contiene x al array
Next

End

Public Sub BuscarNumero()
Dim x As Integer

If Val(txtNumero.Text) <= 0 Then
txtNumero.Text = ""
txtNumero.SetFocus
Return
Endif

For x = 0 To ArrayDeNumeros.Count - 1
LabArray.Text = ArrayDeNumeros[x] 'esto visualiza el número del array actual que se comparara con el número ingresado.
Wait 0.01 ' genera una pausa antes de continuar asi podemos visualizar mejor el proceso
If ArrayDeNumeros[x] = txtNumero.Text Then 'si el item del array es igual al textbox se activa el mensaje
' y el Break, ya que no tiene sentido seguir buscando pues ya encontramos el número, ahí el sentido
' que tiene el comando Break
Message("Break detuvo el bucle porque tu número fue encontrado\nEl número es: " & ArrayDeNumeros[x])
txtNumero.Text = "" 'deja vacío el textbox
txtNumero.SetFocus 'lleva el foco al textbox y queda titilando el cursor pronto para escribir nuevamente
Break ' detiene el bucle y continua leyendo el código después de la instrucción Next
Endif
Next

End


Public Sub btnBuscar_Click()
BuscarNumero 'ejecuta la rutina BuscarNumero
End

Public Sub txtNumero_KeyPress() 'evento que sucede cuando presionamos una tecla
Select Case Key.Code ' examina que tecla fue presionada
Case 48 To 57 'si se preciona alguna tecla del 0 al nueve no hace nada
Case Else ' en cambio si se preciona cualquier tecla que no sea las incluidas en el Case anterior detiene el evento
'lo que logramos con esto es que el usuario no pueda teclear letras o cualquier caracter que no sea un número
Stop Event
End Select
End
Código fuente: Break-0.0.1.tar.gz


sábado, 30 de agosto de 2014

Settings.write y Settings.read

Buenas, para ver los cambios tienen que abrir y cerrar el formulario.


' gambas class file

'by postapase

Public Sub Form_Open()
Print Settings.Path
Settings.Read(Me) 'lee los datos antes guardados con el comando Settings.write
Settings["Blog/postapase"] = "http://novatocodegambas.blogspot.com/" 'ordena que hay que guardar este dato en el archivo
'Settings cuando se cierre el formulario.
Settings.Save ' guarda ya mismo el dato de la linea anterior
LeerArchivoSettings() 'llama a la subrutina que se encargara de leer el archivo Settings y mostrarlo en el TextArea
End


Public Sub by_Click()

Settings.Clear(Me.Name) 'ordena que hay que borrar solo la llave o key Me.name
'que equivale al nombre del formulario en este caso equivale a FMain, se guardara cuando el formulario principal sea cerrado,
'salvo que se ponga la line que viene abajo que ordena guardar inmediatamente.
Settings.Save ' guarda ya todos los datos que ordenaron guardar en el archivo settings
Wait 0.2 ' comando que hace un tiempo antes de ejecutar la linea siguiente.
LeerArchivoSettings() 'llama a la subrutina que se encargara de leer el archivo Settings y mostrarlo en el TextArea
End

Public Sub btnBorrarTodo_Click()
Settings.Clear ' 'ordena que hay que borrar todo el archivo Settings cuando se cierre el formulario principal
Settings.Save 'ejecuta ya mismo todas las ordenes pendientes sobre el archivo Settigns.
Wait 0.2 ' comando que hace un tiempo antes de ejecutar la linea siguiente.
LeerArchivoSettings() 'llama a la subrutina que se encargara de leer el archivo Settings y mostrarlo en el TextArea
End

Public Sub LeerArchivoSettings() 'rutina que se encargara de leer el archivo Settings y mostrarlo en el TextArea
Dim ArchivoSettings As File 'declaramos una variable de tipo archivo para poder leer los datos de un archivo
Dim LineaX As String 'variable de tipo string que contendra los dato de una linea del archivo que estemos leyendo
Dim RutaArchivoSettins As String 'variable de tipo string que contendra la ruta del archivo a leer

TextArea1.Clear 'borramos el textarea sino no visualizaremos los datos como corresponde
RutaArchivoSettins = Settings.Path 'asignamos la ruta del archivo al string

ArchivoSettings = Open RutaArchivoSettins For Read
'open abre un archivo x en la ruta especificada en este caso Settings.path ( )
'For Read indica que abre el archivo solo con intenciones de lectura

'while...wend (El bucle se repite mientras que la expresión es verdadera.)
'Eof devuelve TRUE si estamos al final de un Flujo. (en este caso un archivo)
While Not Eof(ArchivoSettings) 'si eof NO es true ejecute el bluce (comienzo del bluce)
' cuando Eof(ArchivoSettings) es true significa que llego al final del archivo y el bluce no se ejecuta mas
Line Input #ArchivoSettings, LineaX 'lee de a una linea el archivo
' y lo que hay en esa linea lo deposita en lineaX que es una variable de tipo String
TextArea1.Text &= LineaX & gb.NewLine 'va escribiendo en el textarea linea a linea pasando lo que hay en lineax, gb.NewLine es una constante equivalente a poner  LineaX & "\n"
Wend

End

Public Sub BtnGuardar_Click()
Settings.Write(Me) 'ordena que se guarden las coordenadas del FMain en este caso el formulario principal (me) cuando se cierre el formulario.
Settings.Save ' guarda ya todos los datos que ordenaron guardar en el archivo settings
LeerArchivoSettings() 'llama a la subrutina que se encargara de leer el archivo Settings y mostrarlo en el TextArea
End

Public Sub Form_Move() 'evento que sucede cuando movemos el formulario
LabX.Text = "(" & Me.X & ")"
LabY.Text = "(" & Me.y & ")"
End



Código fuente: Settings-write-read-0.0.1.tar.gz

jueves, 21 de agosto de 2014

Listado de recientes



' gambas class file

'por postapase

Private ArbitroRepetido As Boolean
Public AgregandoJueces As New String[]
Public listajueces As ListBox
Public lista As String[]

Public Sub Form_Open()
    listajueces = New ListBox(Me) As "listajueces"
    Me.Center
    With listajueces
       .ScrollBar = 3
       .Enabled = True
       .Visible = False
       .Width = txtArbitro.Width
       .Height = 100
       .x = txtArbitro.X
       .y = txtArbitro.y + txtArbitro.Height
    End With

    CargarArbitros()
End

Public Sub txtArbitro_Change()
  If Len(txtArbitro.Text) <0> 0 Then
     For x = 0 To AgregandoJueces.Count - 1
        If InStr(Left(UCase(AgregandoJueces[x]), Len(txtArbitro.Text)), UCase(txtArbitro.Text)) <> 0 Then
          listajueces.Visible = True
         Endif
      Next
 Endif

 For x = 0 To AgregandoJueces.Count - 1
     If InStr(Left(UCase(AgregandoJueces[x]), Len(txtArbitro.Text)), UCase(txtArbitro.Text)) <> 0 Then
        listajueces.Add(AgregandoJueces[x])
      Endif
 Next

End

Public Sub btnAgregarArbitro_Click()
  SErepiteArbitro(Trim$(txtArbitro.Text))
  If ArbitroRepetido = False Then
    AgregandoJueces.Add(Trim$(txtArbitro.Text))
    GuardarArbitros()
  Endif
  txtArbitro.Clear
  txtArbitro.SetFocus
End

Public Sub SErepiteArbitro(nombre As String)
  Dim itemArray As String

  If AgregandoJueces.Count <> 0 Then
      For Each itemArray In AgregandoJueces
         If itemArray = nombre Then
            ArbitroRepetido = True
         Else
            ArbitroRepetido = False
         Endif
      Next
  Else
    ArbitroRepetido = False
  Endif

End

Public Sub GuardarArbitros()
 Dim arbitro, ConjuntoArbitros As String
 For Each arbitro In AgregandoJueces
     ConjuntoArbitros &= arbitro & ","
 Next
 ConjuntoArbitros = Left(ConjuntoArbitros, Len(ConjuntoArbitros) - 1)
 Settings["ArbitrosRecientes/Lista"] = ConjuntoArbitros
 Settings.Save
End

Public Sub CargarArbitros()
  Dim lista As String
  lista = Settings["ArbitrosRecientes/Lista", ""]
  AgregandoJueces = Split(lista, ",")
 End

Código fuente:ListaJueces-0.0.1.tar.gz
                       ListaArbitros 0.0.2

miércoles, 20 de agosto de 2014

HallarNumeroMayorOmenor




' Gambas class file

' Escrito por postapase
' Creo que falta un complemento o un comando que ejecute esta función en gambas

Public ConjuntoNumeros As New Integer[]
Public HallarMaryorOmenor As String
Public ResultadoFinal As Integer

Public Sub _new()

End

Public Sub Form_Open()
Me.Center
End

Public Sub btnAgregarNumero_Click()
Dim numero As Integer
  If IsNull(TextBox1.Text) Then
    Message("ingrese un número por favor")
    Return
  Else
    ConjuntoNumeros.Add(Val(TextBox1.Text))
  Endif
  TextBox2.Text &= TextBox1.Text & ","
  TextBox1.Clear
  TextBox1.SetFocus
End

Public Sub Button2_Click()
  If rbtnMayor.Value = True Then
    HallarMaryorOmenor = "mayor"
  Else
    HallarMaryorOmenor = "menor"
  Endif
  CalcularMaxMin(ConjuntoNumeros, HallarMaryorOmenor)
  labResultado.Text = ResultadoFinal
End

Public Function CalcularMaxMin(numeros As Integer[], maxomin As String) As Integer
  Dim Resultados As New Integer[]
  Dim conteo, conteo2, NumActual, NumMenor As Integer
  Dim NumMayor As Integer = 0
   
  Resultados = numeros

  For conteo = 0 To numeros.Count - 1 Step 1
    If Resultados[conteo] > NumMayor Then
      NumActual = Resultados[conteo]
      NumMayor = NumActual
    Endif
  Next 

  NumMenor = NumMayor

  For conteo2 = 0 To numeros.Count - 1 Step 1
     If Resultados[conteo2] < NumMenor Then
       NumActual = Resultados[conteo2]
       NumMenor = NumActual
     Endif
  Next 

  If maxomin = "mayor" Then
    ResultadoFinal = NumMayor
    Return ResultadoFinal
  Else
    ResultadoFinal = NumMenor
    Return ResultadoFinal
  Endif
 
End

Public Sub TextBox1_Change()
  If Len(TextBox1.Text) = 3 Then btnAgregarNumero.SetFocus
End

Public Sub TextBox1_KeyPress()
   Select Case Key.Code
        Case 48 To 57
        Case 65456 To 65465
        Case Key.BackSpace
        Case Key.Left
        Case Key.Delete
        Case Key.Right
        Case Key.BackTab
        Case Key.Home
        Case Key.End
        Case Key.Tab
        Case Else
            Stop Event
      End Select
End




Código: HallarNumeroMayorOmenor-0.0.1.tar.gz