Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



martes, 19 de febrero de 2013

Lazarus: Libro Gratuito Empezando a programar usando Object Pascal

Lazarus: Libro Gratuito 

Empezando a programar usando

 Object Pascal 


En http://www.etnassoft.com/biblioteca/ he encontrado este interesante libro, bastante reciente (fecha de edición 30 de agosto de 2012)  para aprender Pascal y Lazarus, escrito por Motaz Abdel Azeem.

En sus 150 páginas, puedes aprender desde "cero", Pascal y además usar Lazarus, un IDE para realizar aplicaciones gráficas.



Se divide en 4 capítulos:

  1. Lenguaje básico
  2. Programación estructurada
  3. La interfase gráfica (Lazarus)
  4. Programación orientada a objetos

Lo más interesante son los últimos capítulos, ya que yo no encontrado mucha información ni manuales de Lazarus, y este libro contiene varios ejemplos completos y sobre todo, porque explica como crear las interfases gráficas (formularios, llamada a otros formularios ,y los componentes típicos texteditor, listbox y botones.)

Bueno, ya tengo  una razón más para volver a instalar Lazarus.

Enlace del libro en OpenLibra:
http://www.etnassoft.com/biblioteca/start-programming-using-object-pascal/


Enlace de descarga del proyecto Lazarus:
http://www.lazarus.freepascal.org/



 Nota:
La descarga es gratuita, solo teneis que ver los anuncios, esperar 5 segundos y pulsar sobre el botón superior derecho que os sale despues de la cuenta atrás.


domingo, 17 de febrero de 2013

Ejemplo de uso del contenedor ScrollView


Os traigo un ejemplo de uso del contenedor llamado scrollview, que nos permite trabajar con formulario o imágenes que tengan grandes dimensiones, y movernos atreves de ellos mediante scrollbar horizontales y verticales


 

En este ejemplo podeis crear objetos dentro del scrollview (unos muñecos de nieve o un arbol), cogerlos y moverlos a lo largo del fondo para colocarlos donde querais.


He tenido bastantes problemas para usar este contenedor, ya que los objetos, al mover la barras de scroll, no me dejaba volverlos seleccionar.

 Al final, Shordi, un compañero del foro de gambas-es.org, me dio la pista para resolverlo, usando las coordenadas absolutas de los objetos en vez de las coordenadas relativas. Gracias Shordi !!!

Os comento, los objetos tienen propiedades X, e Y, que son la posición con respecto al contendor que los contiene (son las llamadas coordenadas relativas). Ademas tienen las coordendas ScreenX, y ScreenY, que son las coordenadas respecto a nuestro escritorio (coordenadas absolutas).

El problema era que cuando se movia la vista del scrollview, las coordenadass relativas cambiaban, y el bucle que usaba para detectar los objetos cuando apretaba el boton del raton, no los encontraba.


Al final usando las coordenadas absolutas, pude resolver este problema.


Además, también tuve que añadir los eventos relacionados con la imagen de fondo y del propio scrollview, para que cuando se pulsara el boton (_MouseDown() y _MouseUp() ) , o se arrastrara ( _MouseMove() ), también se comprobara si la posición del ratón coincidía con la posición de algunos de los objetos.

Aqui os dejo parte del código que he usado, al final del articulo teneis el enlace de descarga del codigo completo.

-->

Public Sub Obs_MouseDown()
Print "Evento en Obs.....mousedoww"
capturaDown(Mouse.ScreenX, Mouse.screeny)
End

Public Sub Obs_MouseUp()
Print "Evento en Obs....up"
capturaUp()
End

Public Sub obs_MouseMove()
Print "Evento en Obs...mousemove"
capturaMoviendo(Mouse.screenx, Mouse.screeny)
End


'------------------------------------------------------------------------
' up, down, y move
'------------------------------------------------------------------------

Public Sub capturaUp()
'suelta el boton...
If Not IsNull(objetoCapturado) Then
If objetoCapturado.tipo = "Buenos" Then
objetoCapturado.Picture = imagenBuenos
Else
If objetoCapturado.tipo = "Malosfesor" Then
objetoCapturado.Picture = imagenMalos
Endif
Endif
LabelCoordenada.x = objetoCapturado.x
LabelCoordenada.y = objetoCapturado.y - 20
LabelCoordenada.text = "(" & objetoCapturado.x & "," & objetoCapturado.y & ")"
LabelTextoPersona.Visible = False
LabelCoordenada.Visible = False
objetoCapturado = Null
Endif
End

Public Sub capturaMoviendo(mousex As Integer, mousey As Integer)
If Not IsNull(objetoCapturado) Then
objetoCapturado.X += (MouseX - objetoCapturado.ScreenX) / escalafoto
objetoCapturado.y += (Mousey - objetoCapturado.ScreenY) / escalafoto
LabelTextoPersona.x = objetoCapturado.x
LabelTextoPersona.y = objetoCapturado.y + imagenMalos.h / escalafoto
LabelTextoPersona.Visible = True
LabelCoordenada.x = objetoCapturado.x
LabelCoordenada.y = objetoCapturado.y - 20
LabelCoordenada.text = "(" & objetoCapturado.x & "," & objetoCapturado.y & ")"
LabelCoordenada.Visible = True
Endif
End

Public Sub capturaDown(mouseScreenx As Integer, mouseScreeny As Integer)
Dim objtemp As ClassMejorPictureBox
'busco si algun array
For Each objtemp In arrayBox
Print " Objeto:", objtemp.screenX, objtemp.screenY
Print " scrollX:", ScrollView1.Scrollx
If (MousescreenX + 50) >= objtemp.screenX And objtemp.screenX >= (MousescreenX - 20) Then
If (MousescreenY - 20) <= objtemp.ScreenY And (MousescreenY + 50) >= objtemp.screenY Then
objetoCapturado = objtemp
If objetoCapturado.tipo = "Buenos" Then
objetoCapturado.Picture = imagenBuenosDes
LabelTextoPersona.text = objetoCapturado.Texto
LabelCoordenada.x = objetoCapturado.x
LabelCoordenada.y = objetoCapturado.y - 20
LabelCoordenada.text = "(" & objetoCapturado.x & "," & objetoCapturado.y & ")"
LabelCoordenada.Visible = True
Break
Else
If objetoCapturado.tipo = "Malosfesor" Then
objetoCapturado.Picture = imagenMalosDes
LabelTextoPersona.text = objetoCapturado.Texto
LabelCoordenada.x = objetoCapturado.x
LabelCoordenada.y = objetoCapturado.y - 20
LabelCoordenada.text = "(" & objetoCapturado.x & "," & objetoCapturado.y & ")"
LabelCoordenada.Visible = True
Break
Endif
Endif
Break
Endif
Endif
Next
End


 Enlace de descarga del ejemplo completo: https://www.box.com/s/if3jjqbom2bysvas10lx

 Nota:
La descarga es gratuita, solo teneis que ver los anuncios, esperar 5 segundos y pulsar sobre el botón superior derecho que os sale despues de la cuenta atrás.



miércoles, 13 de febrero de 2013

3 ejemplos de uso de Arduino y Gambas

 3 ejemplos de uso de Arduino y Gambas


Os dejo aqui la recopilación de 3 de mis entradas de este blog, dedicadas a ejemplos sobre  Arduino y Gambas.

Por lo sencillo y fácil de conseguir interfaces gráficas con Gambas, es un lenguaje ideal para trabajar en pareja con Arduino, tanto para mostrar información de los dispositivos conectados a este, como para mandarles ordenes.

Estos tres ejemplos, recogen la forma de hacerlo.




Ejemplo 1:
Mi primera aplicación con Arduino y Gambas: Encendido y apagado de un Led


Ejemplo 2:
Lectura de datos de varios sensores de arduino y presentación gráficas de resultados en Gambas




Ejemplo 3:
Controlar dos servomotors con Gambas mediante Arduino


NOTA:



Si no sabes programar en Gambas, puedes empezar por aqui:


y en el foro en castellano:






viernes, 8 de febrero de 2013

MediaMarkt ¿dia sin IVA?, ellos no son tontos...

 
MediaMarkt ¿dia sin IVA?, ellos no son tontos...




Esta historia es real, ocurrió el pasado lunes 4 de febrero:
Durante el fin de semana  anterior habían estado "bombardeando" con anuncios de esta promoción.

Un compañero de trabajo, le había echado desde (hace meses) el ojo a un disco duro, su precio en enero era sobre los 125 euros (con iva incluido).... el famoso "día sin iva", se acercó para comprarlo, prometiendoselas muy felices para comprar el disco duro con un buen descuento debido a la oferta, por un precio cercano a los 100 euros....

Cuando llegó al supermercado en cuestión y comprobó el producto, increíblemente, su precio..... ¡¡¡ había subido !!!!, ahora esta sobre los 140 euros!!! y aplicándole el descuento se le quedaba en 116 euros... ¿pero que promoción es esta?

Pillo un rebote y se fue a su casa sin comprarse nada.... y durante el camino pensaba: "Ellos si que no son tontos"...










miércoles, 6 de febrero de 2013

Especial dia de los enamorados: Create tu felicitación online

Especial día de los enamorados:
Create tu felicitación online

En tiempos de crisis hay que agudizar la imaginación y gastar poco... se acerca el día de los enamorados (14 de febrero), y he encontrado esta web: http://www.online-image-editor.com/  donde podeis tener un detalle con vuestra pareja y haceros vuestra propia felicitación "personalizada".



 Es muy sencillo, os lo explico en unos cuantos pasos:
1) Entrar en la pagina web: http://www.online-image-editor.com/
2) Pulsar el botón: "Try Here"
3) Os sale esta pantalla:


Si pulsamos sobre el combobox, ponemos la página web en castellano.

4) Ahora pulsamos en el botón de "cargar nueva imagen"

5) Vemos que nos da varias opciones de cargar la foto:

Podemos cargar una imagen desde nuestro disco duro (opción Cargar, y examinamos el nuestro disco duro para seleccionar la imagen), o desde url:
Donde le podemos pegar la dirección url donde se encuentre nuestra imagen.

6) Una vez cargada nuestra foto,  vamos a pulsar el botón "Borde Foto"

7) Pulsando en el panel izquierdo, botón "Más Marcos" (1) podemos elegir cientos de distintos tipos de marcos, por dististos temas, yo he escogido "Amor" (2), y luego seleccionamos el marco (3):
8) Ahora se nos inserta el marco encima de nuestra foto (que estará como fondo).
9) Como veis tenemos que "Redimensionar la foto" o el "marco" (2), para ajustar bien las dimensiones de la foto y el marco.... Ademas también podemos mover nuestra foto, aparece una manita que nos permite moverla, para ajustar perfectamente nuestra foto con el marco:

9) Una vez conseguido que quede bien el marco con la foto, pasamos a guardar el montaje, pulsando el botón "Guardar"

Como veis nos dá varias opciones, desde guardarla al disco duro, llevarla al ImageShack, o publicarla en Facebook.


Bueno, ya no teneis escusa para hacer vuestra felicitación.

Espero que os haya gustado el "mini-tutorial".


Saludos










































martes, 5 de febrero de 2013

Haciendo el gambas: RecortesDeRajoy

Haciendo el gambas: RecortesDeRajoy

En el trabajo uso windows 7 :( , y hay una aplicación que me ha gustado por su simplicidad, se llama Recortes, que sirve para capturar zonas de la pantalla.

En gnu/linux, tenemos muchos programas que sirven para hacer esto mismo, de hecho Cristian Rod,
ha hecho un video tutorial de como usar una de ellas (http://www.youtube.com/watch?v=jhSbknRHkK0 ) por consola.

Se me ha ocurrido hacer un "front-end" (aplicación gráfica)  de este comando de la terminal, haciendo que funcione casi igual que el Recortes de Windows.

Aqui os dejo la aplicación para que la proveis...
Descarga Codigo fuente: RecortesDeRajoy.tar.gz
Descarga ejecutable .gambas: ejecutable codebyte .gambas
Paquete de instalacion: recortesderajoy.deb

 
Hace falta tener instalado gambas 3.3.4
$sudo add-apt-repository ppa:nemh/gambas3 
$sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 73C62A1B  
$sudo apt-get update
$sudo apt-get install gambas3

Y imageMagick:
$sudo apt-get install imagemagick



Nota:
El nombre no es de causalidad, es que tengo un primo que se llama Rajoy ;)