Mostrando entradas con la etiqueta Gambas. Mostrar todas las entradas
Mostrando entradas con la etiqueta Gambas. Mostrar todas las entradas

11 nov 2012

Crear una base de datos de clientes en Gambas

Continuo mi andadura con la programación en Gambas, y esta vez le toca el turno a las bases de datos, con las que también estoy trabajando en Java. Siguiendo el libro de Gambas de Daniel Campos y José Luis Redrejo he creado una base de datos para clientes. Utiliza una SQLite aunque cuando realice la aplicación en Java lo haré con MySQL, que parece más extendida y trabaja utilizando un servidor.
La aplicación se encarga de mostrar una lista de los clientes actuales en una ventana principal y añade las opciones de añadir, modificar o borrar. Para la opción añadir se abre una nueva ventana para introducir los caracteres. 
Con respecto al libro citado anteriormente tuve que realizar distintas modificaciones, bien porque la versión actual de Gambas (3.3.3) difiere de la utilizada para el libro, o bien porque mi aplicación, aunque parecida, tiene algunas diferencias. En el siguiente vídeo se muestra el proceso de creación de una nueva base de datos, que parece ser una opción que a muchos usuarios les cuesta encontrar

El aspecto de la ventana principal cuando aún no hay datos de ningún cliente es
Aspecto general de la aplicación

Mientras que con datos ya introducidos pasa a ser
Aspecto con datos introducidos

Esta es la ventana para añadir o modificar de la base los datos de un cliente
Ventana para añadir o modificar cliente
Podéis descargar el código fuente y el archivo ejecutable aquí

4 nov 2012

Desarrollando una aplicación gráfica para apagar el sistema automáticamente

Hay comandos en GNU/Linux que permites realizar un apagado de nuestro sistema. Este apagado se puede hacer, bien indicando en cuántos minutos queremos que se apague, o bien indicando la hora. Si queremos la opción de minutos restantes:
shutdown -h minutos
Mientras que si preferimos indicar la hora:
shutdown -h hh:mm
En caso de haber introducido la opción de apagado automático y que queramos cancelarla:
shutdown -c
Utilizando estos comandos y la potencia de gambas podemos desarrollar fácilmente una aplicación gráfica que permita el apagado del sistema. Veámos cómo hacerlo. 
Lo primero es crear el diseño de nuestra aplicación. En mi caso he decidido no esmerarme mucho, y el resultado obtenido es 
Aspecto visual
En esta ventana tenemos la opción de elegir ambos tipos de apagado y además nos muestra el comando que se envía en consola. Por simplicidad a la hora de realizar la programación, requiere que en el caso de elegir la opción "Apagar a las" se introduzcan dos dígitos en cada recuadro y que los valores sean válidos. A continuación se muestran ejemplos con las diferentes opciones en funcionamiento
Ejecutando la opción "Apagar en"

Ejecutando la opción "Apagar a las"

Ejecutando la opción "Cancelar apagado"
El código que ejecuta esta aplicación es


' Gambas class file

Public minutosRestantes As String
Public minutos As String
Public hora As String
Public comando As String
Const cancelar As String = "gksu -l shutdown -c"
Const apagar As String = "gksu -l shutdown -h "

Public Sub _new()

End

Public Sub Form_Open()

End

Public Sub btnCancelar_Click()

  comando = cancelar  'Asignamos como comando la opción cancelar
  txtComando.text = comando
  Shell comando 'Enviamos el comando a la shell
  

End

Public Sub btnAceptar_Click()

  If rdbCuentaAtras.value = True Then   'Comprueba si el boton de cuenta atras esta activo
    minutosRestantes = vlbMinutosRestantes.Text   
    comando = apagar & minutosRestantes   'Si lo está, envía el comando de cuenta atrás
    txtComando.text = comando
    Shell comando
  Else 'Si no lo esta, entonces se envia la hora a la cual queremos apagar la computadora
    hora = vlbHora.Text
    minutos = vlbMinutos.Text
    comando = apagar & hora & ":" & minutos  'Concatena para formar el comando
    Shell comando
    txtComando.text = comando
  Endif  '

End

Gambas y el comando "shell"

Shell es un intérprete de comandos que permite controlar el funcionamiento de la computadora. En GNU/Linux disponemos de la terminal, con la cuál podemos, introduciendo los comandos en modo texto, acceder al sistema.
Indagando un poco en el foro de gambas en español me he percatado de una posibilidad que ofrece esta herramienta que aumenta exponencialmente las posibilidades a la hora de crear programas. Y no es otra cosa que el comando SHELL que se encarga de pasar un comando al sistema. Una guía de comandos la podemos encontrar en el tutorial Linux de tecnum  o en la documentación de Ubuntu en español. Veamos un ejemplo simple que, aunque a priori no muestre toda la grandeza de este comando de gambas, permite dar una idea. El ejemplo consiste en actualizar nuestro sistema. Aunque existe aplicaciones gráficas que permiten hacer esto, también se puede hacer, como todo desde la terminal, de la forma que se muestra a continuación
Evidentemente, es un método que requiere conocer los comandos y que para el usuario puede resultar complejo. Sin embargo, esto mismo se puede hacer gráficamente con una aplicación muy simple. Consiste en un simple botón que al ser pulsado se produce el envío de ese comando a la shell. La interfaz gráfica es
Pulsando este botón se ejecutará la actualización del sistema. El código el siguiente

' Gambas class file

Public Sub _new()
End

Public Sub Form_Open()
End

Public Sub btnActualizar_Click()
Shell "gksu -l apt-get update && gksu -l apt-get upgrade" Wait
End

Como podéis observar el código resulta bastante sencillo. Pronto espero publicar una aplicación más interesante... el apagado automático del sistema.

3 nov 2012

¿Algún visual basic para linux? Sí, Gambas

Llevo unos meses dedicando tiempo a la programación. Aunque ya tenía conocimientos previos, eran muy básicos, así que decidí dar un empujón al tema. Si has leído la entrada anterior, habrás observado que uno de los tutoriales que podemos encontrar en tecnum está dedicado a Visual Basic, que es para principiantes una de las opciones más adecuadas. Este software permite implementar aplicaciones gráficas en muy poco tiempo. Al estar dirigido a sistemas Windows, decidí buscar algún equivalente para Linux. La respuesta la encontré rápido: Gambas. Aunque hace un tiempo escuché acerca de este proyecto, pensé que estaría actualmente abandonado. Nada más lejos de la realidad, han sacado a la luz tres versiones en aproximadamente un mes. Así que me decidí a probarlo. Si bien la interfaz puede dejar mucho que desear visualmente hablando, cumple con el cometido que andaba buscando, crear programas básicos con facilidad. Sin embargo, gambas utiliza un lenguaje muy parecido a Basic, que era hasta ayer desconocido para mí. Así que se me ocurrió la idea de comenzar a adquirir conocimientos de Basic utilizando el tutorial de tecnum y combinarlo con Gambas. Los resultados me parecen interesantes, el ritmo de aprendizaje muy bueno. También busqué algún tipo de tutorial dedicado especialmente a gambas. Fruto de esta búsqueda encontré el portal Comunidad Gambas-es, en el cuál se incluye una sección de descargas de manuales, entre ellos uno de Daniel Campos y José Luis Redrejo más que interesante (puedes descargarlo desde aquí). Combinando toda esta información me propuse realizar un primer ejemplo. A continuación voy a explicar mi primer proyecto, basado en un ejemplo calculadora muy elemental  incluido en el curso de Visual Basic. Basta con arrancar la aplicación, seleccionar la opción de generar una nueva aplicación gráfica, dar un nombre a nuestro proyecto y ya nos encontramos con algo como esto
Que viene a ser una interfaz, si bien no muy buena estéticamente, con una estructura y opciones parecidas a las que nos podamos encontrar en Visual Basic de versiones antiguas. Añadiendo los elementos necesarios a la ventana principal obtenemos
Con la interfaz ya diseñada, resta por añadir un poco de código en el Main para hacer funcional el programa

' Gambas class file

Public Sub _new()
End

Public Sub Form_Open()
End

Public Sub btnSuma_Click()
  vlbResultado.Text = Val(vlbOperando1.Text) + Val(vlbOperando2.Text)
  txtOperacion.Text = "+"
End

Public Sub btnResta_Click()
  vlbResultado.Text = Val(vlbOperando1.Text) - Val(vlbOperando2.Text)
  txtOperacion.Text = "-"
End

Public Sub btnMultiplicacion_Click()
  vlbResultado.Text = Val(vlbOperando1.Text) * Val(vlbOperando2.Text)
  txtOperacion.Text = "*"
End

Public Sub btnDivision_Click()
  vlbResultado.Text = Val(vlbOperando1.Text) / Val(vlbOperando2.Text)
  txtOperacion.Text = "/"
End
El resultado obtenido es
Espero que les haya gustado...