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: