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

miércoles, 6 de agosto de 2014

RespaldaProyectos 0.0.1

Buenas gente, estoy empezando un nuevo proyecto que consiste en hacer respaldos automáticos de nuestros proyectos gambas simplemente dando la ruta de la carpeta del proyecto y el lugar donde queremos hacer el respaldo por ahora es manual intentare hacer automático mas adelante pero creo que es un programita útil super super liviano, la idea es que se ejecute con el sistema así puede hacer las copias según como las hayamos programado, si por día por hora o lo que fuera. por ahora es manual recién comienzo el proyecto.



' Gambas class file
' por postapase
Public CarpetaDeProyecto As String
Public LugarDErespaldo As String
 
Public Sub _new()

End

Public Sub Form_Open()
 Me.Center
 txtLugarProyecto.Text = Settings["CarpetasDEtrabajo/Proyecto", ""]
 txtLugarDondeRespaldar.Text = Settings["CarpetasDEtrabajo/LugarDeRespaldo", ""]
End

Public Sub Button1_Click()
 Dialog.Path = User.Home
 If Dialog.SelectDirectory() Then Return
 CarpetaDeProyecto = Dialog.Path
 txtLugarProyecto.Text = CarpetaDeProyecto
 Print CarpetaDeProyecto
End

Public Sub Button4_Click()
  Me.Close
End

Public Sub Button2_Click()
 Dialog.Path = User.Home
 If Dialog.SelectDirectory() Then Return
 LugarDErespaldo = Dialog.Path
 txtLugarDondeRespaldar.Text = LugarDErespaldo
End

Public Sub btnAplicar_Click()
  Settings["CarpetasDEtrabajo/Proyecto"] = CarpetaDeProyecto
  Settings["CarpetasDEtrabajo/LugarDeRespaldo"] = LugarDErespaldo
  Settings.Save
End

Public Sub btnRespaldar_Click()
 Dim TiempoRespaldo As Process
 Dim entrada As String
 Dim salida As String
 Dim carpetafecha As String
 
  entrada = Settings["CarpetasDEtrabajo/Proyecto", ""]
  salida = Settings["CarpetasDEtrabajo/LugarDeRespaldo", ""]

  carpetafecha = salida &/ Replace$(CString(Time), ":", "-")

  If Exist(salida) = True Then
    Mkdir carpetafecha
  Else
    Message("Carpeta destino no encontrada!")
  Endif

  TiempoRespaldo = Shell "cp -Rf " & entrada & " " & carpetafecha

End


Public Sub salir_Click()
  Me.Close
End

Public Sub Autor_Click()
  Autor1.ShowModal
End


RespaldaProyectos-0.0.1.tar.gz


domingo, 20 de julio de 2014

Programar con última version de Gambas en PC obsoleto!!

Buenas Gente!!

Les traigo un notición, en este post se trata de instalar la versión mas moderna de gambas en una pc obsoleta que por lo general se tira.

Caracteristicas de PC obsoleta:

Procesardor intel 733 
Memoria ram 256
Disco 10 gigas

Sistema operativo:
 http://minino.galpon.org/ ( minino-artabros-2.0. )
http://minino.galpon.org/es/descargas


Repositorio: 
 deb http://ftp.us.debian.org/debian/ sid main


1. descargamos la iso: minino-artabros-2.0
2. la grabamos en un cd
3. configuramos el bios para arrancar del cd
4. instalamos mínimo-artabros 2.0
5. agregamos el repositorio  deb http://ftp.us.debian.org/debian/ sid main 
6. instalamos el paquete gambas3  (synaptic)
7. instalar tanteador de tenis de mesa (opcional para clubes, liceos, escuelas etc)


Destalles de instalación:
memoria durante la instalación 133 (promedio) 145 o 150 picos
memoria solo sistema recién instalado 82 megas
memoria con tanteador andando 105 megas
procesador funciona a tope por eso si en vez de 733 fuera un poco mas alto seria mejor.


Nota: para poder hacer esto tenes que tener conocimientos medios de informática, me da pereza hacer un tutorial detallado ademas de que seria bastante largo, si vos no te animas, decile algún amigo ducho en el tema o de ultima pedicelo a un técnico, espero les guste.