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:



jueves, 31 de julio de 2014

El evento _get: Recorrer colecciones como si fueran un array

El evento _get: Recorrer colecciones como si fueran un array


Esta semana se me ha planteado un pequeño problema:
Tenia una colección (collection ) la  cual loa tenia que recorrer de una forma sencilla, usando un bucle,  por ejemplo un for ... next.

El caso,es que una colección, no se puede recorrer, ya que solo te devuelve valores cuando metes una llave (la Key).

Bueno pues se me ha ocurrido usar el evento _get en una nueva clase, que la he llamado MejoradaColeccion. Este evento ocurre cuando se le llama al objeto pasando le entre corchetes algo (un numero, una cadena o lo que sea).

Programado seria asi:

-
-

Lo interesante que a la hora de usarlo, puedo hacerlo de esta dos maneras:

c[2] ' usando un numero
c["sol"] ' usando una llave de la colección (Key)

Y las dos las admite!!!

Os dejo aqui el código completo y un ejemplo.
Código de la clase MejoraColección
-
-
Fmain: programa ejemplo para usarlo
-
-

Descargar






Para más información:
http://gambaswiki.org/wiki/comp/gb/collection?l=es



domingo, 27 de julio de 2014

Dibujando una curva Bezier de más de 3 puntos


Dibujando una curva Bezier

 de más de 3 puntos


Gambas3, tiene una instrucción para dibujar curvas Bezier de 3 puntos, (paint.curveto) pero para crear curvas con más puntos hay que hacerlo mediante ecuaciones paramétricas.

Pues basándome en la siguiente función paramétrica:



He hecho el siguiente programa para dibujar y editar curvas Bezier de forma "interactiva".

Os dejo aquí un vídeo para que veáis como se usa.



Código fuente:
-
-


Descargar



Fuentes:
http://es.wikipedia.org/wiki/Curva_de_B%C3%A9zier
http://it.wikipedia.org/wiki/Curva_di_B%C3%A9zier

sábado, 26 de julio de 2014

Screengrab (fix version): tener en formato imagen una página web completa exactamente como la vemos en el navegador

Screengrab (fix version): 

Tener en una imagen una página web completa exactamente como la vemos en el navegador



Todos conocemos la opción de  "imprimir" o "vista preliminar", que existen en los navegadores para imprimir las páginas web que visitamos.



 Y la impresión que obtendriamos seria asi:




Pero algunas veces eso no nos es suficiente, ya que queremos tener una impresión tal como sale en nuestro navegador.

Obtener una imagen todo el contenido de la página web que estemos visitando:

Con un capturador de pantalla no nos sale todo la página web o le tenemos que aplicar un zoom reductor con lo que se perderían detalles, o literalmente se haría ilegible el texto:





Bien, pues existen complentos a nuestro navegador que hacen esta función, captura la página web completa, y la guardan en formato .png, el cual podemos facilmente editarla por ejemplo con gimp.

Yo uso Screengrab (fix version)




Una vez instalado el complemento, se os instala un icono en la barra:



y ademas os aparecera una nueva opción en el menu popup del firefox (pulsar el botón derecho), donde podeis las distintas opciones y configuraciones del programa:



Podemos obtener, por ejemplo, esta imagen de una de las entradas de mi blog:




Vereis que el nivel de detalle es magnífico, en mi caso sale muy larga ya que tengo una barra vertical muy amplia, pero no perdemos detalle!!!, podemos leer perfectamente el texto!!!.

Nota:
He subido una imagen "reducida" al blog. Teneis que usar el programa, y ver realmente el resultado.


Espero que os sea útil

Saludos

Julio

viernes, 25 de julio de 2014

Botón "Ir Arriba" con jQuery que aparece y desaparece en vuestros blogs de blogspot.com

Es muy sencillo. Visita este link:

http://ciudadblogger.com/2012/03/boton-ir-arriba-con-jquery-que-aparece.html?m=1

Alli, explica con todo detalle  como añadir el código necesario para poderlo poner en tu blog de blogspot (antes blogger)

Para "personalizar" la imagen debeis sustituir  el código

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl3XjoztSPwyVKWOwQNIq06ymcNwqrE8hAIZl4ZsesBGvNFsucoTNgyYi-g5W4lcwX1RfvyB9oBfCbTq2228iftzhk53rGf4a1qyKcvbaaRt-wL-blSjIu3S-EK5xYqtTbKarGUrsjphg/s60/flecha-arriba.png

a la ruta donde tengáis almacenado vuestra imagen.




Aquí el icono que voy a poner en mis blogs:


Lo teneis que poner de un tamaño menor a 60x60 px:

¿esta chulo ehhh?

Saludos

lunes, 21 de julio de 2014

Plan: una agenda para llevar las tareas diarias.



Estaba buscando un programa para llevar mi agenda diaria de tareas de una manera fácil, y no quería instalar programas "pesados", como Evotulion, Kontact o Sunbird. Y he encontrado a plan .

Es un programa simple, pero que cumple con lo que necesitaba:
- Me muestra un calendario en pantalla donde puedo ver las tareas


- Tienes varias vistas, en la del "día", que permite ver mejor la distribución de las tareas a lo largo de la semana.


- También tiene un excelente buscador, que te permite buscar tus tareas o citas, por varios métodos:


El que me es más útil, es buscar por palabra:




Para más información:
http://www.bitrot.de/plan.html


Saludos




viernes, 18 de julio de 2014

Ejemplo de uso de los eventos Enter y Leave

Ejemplo de uso de los 

eventos Enter y Leave


A parte de los eventos click, y dobleclick, existen otros muchos eventos útiles para nuestros programas.

Hoy os enseño un ejemplo del uso de los eventos Enter y Leave, que se producen cuando entramos o salimos en un control.

He puesto 3 label, la cuales reaccionan de diversa manera cada vez que entramos o salimos con el cursor del ratón.


Código Fuente:
-

-

Descargar

jueves, 17 de julio de 2014

Conocer el nombre y tamaño de las particiones desde Gambas3



Conocer el nombre y tamaño de las particiones desde Gambas3




Este es un ejemplo de uso de comandos externos, dentro de gambas3, y poder extraer información de estos comandos.

En este caso se trata de extraer información de las particiones de nuestro disco duro (o incluso usb conectados). Se trata de leer la salida que genera el comando:

$ cat /proc/partitions 

El texto que se genera, se analiza por el programa, y se extraen arrays de datos (nombre y espacio), de las particiones. Estos datos se muestran tanto en consola como en un formulario con un listbox y un combobox.

Además he añadido un control timer, que cada 5 segundos comprueba si existen cambios en las unidades conectadas, y si los hay nos avisa con un mensaje de que se han producidos conexiones o desconexiones de unidades de disco/usb.

Captura de la aplicación:



Código fuente:
--



Descargar


miércoles, 16 de julio de 2014

Actualización: Gambas 3.5.4 en el repositorio sid de Debian

Actualización: Gambas 3.5.4 en el repositorio sid de Debian

Según informa  Ian Haywood, en las listas de gambas (http://sourceforge.net/p/gambas/mailman/gambas-user ), ya tenemos la última versión de Gambas3.5.4, en el repositorio sid de Debian:


El mensaje original, que es parte de una conversación, es este:

start with the debian packaging guidelines to get an idea of how the system works in general. https://wiki.debian.org/IntroDebianPackaging Next, download the debian 3.5.4 packages in sid. https://packages.debian.org/source/sid/gambas3 [look at the bottom of the page] These debian packages will compile as-is on later versions of ubuntu, all you will need to do is change the name of the target distro in debian/changelog from unstable to "raring", "quantic" or whatever. Your problem is going to be the older versions, some gambas3 subpackages [gb.jit, gb.media, possibly a couple of others] just won't compile as the relevant libraries are too old. You will need to produce versions of gambas3 that don't have those subpackages. 
[as an aside, this is why I've never bothered producing a version for debian stable, lots of stuff won't compile and so the reality is most debian people who want to run an up-to-date gambas will need to upgrade their whole system anyway]
 Ian
La traducción sería (con google) seria:
El principio con el debian directrices de embalaje para conseguir una idea de como el sistema trabaja en general. https: // wiki.debian.org/IntroDebianPackaging Después, trasvase el debian 3.5.4 paquetes en sid. https: // packages.debian.org/source/sid/gambas3 [la mirada en el fondo de la página] Estos paquetes de debian compilarán como - está sobre las versiones posteriores de ubuntu, todo que usted tendrá que hacer es el cambio el nombre del objetivo distro en debian/changelog de inestable a "raring", "quantic" o algo así. Su problema va a ser las más viejas versiones, algunos subpaquetes de gambas3 [gb.jit, gb.media, posiblemente un par de otros] solamente no compilará como las bibliotecas relevantes son demasiado viejas. Usted tendrá que producir las versiones de gambas3 que no tiene aquellos subpaquetes. [como un aparte, esto es por qué nunca me he molestado en en producir una versión para debian estable, mucha materia no compilará y entonces la realidad es la mayor parte de personas debian quienes quieren correr gambas actualizado tendrá que mejorar su sistema entero de todos modos]


Para instalarlo, por ejemplo en Minino PicarOS "Diego", una distribución derivada de Debian, estos son los pasos a seguir:

1) Iniciar synaptic:
$sudo synaptic

2) Cambiar al respositorio SID
Y pulsa el botón "Aceptar"

3) Pulsar el botón de "recargar repositorio"

4) Buscar Gambas y vemos algo parecido a esto:
En la captura puedes ver que tenia instalado gambas3.5.3.

5) Seleccionar todos las lineas donde aparezca gambas3.5.4.1

Y le damos al botón de "aplicar":

Y empezará la instalación.

Una vez terminada, salimos del synaptic y ya tendremos la nueva versión de gambas3 instalada:



Saludos!!!

lunes, 14 de julio de 2014

Usando Estructuras de Datos: ejemplo de insertar/modificar/borrar y guardar datos en un archivo plano.

 

 Usando Estructuras de Datos: 

ejemplo de insertar/modificar/borrar y

 guardar datos en un archivo plano.


Este es un ejemplo de como se puede gestionar datos usando estructuras de datos, podeis encontrar más información en curso de gambas: estructuras de datos

Las estruturas de datos se definen de la siguiente manera en gambas:


PUBLIC STRUCT
Identifier
  Field 1 [ Embedded array declaration ] AS [ Datatype ]
  Field 2 [ Embedded array declaration ] AS [ Datatype ]
  . . .
 Field n [ Embedded array declaration ] AS [ Datatype ]
END STRUCT


En el ejemplo vamos a usar este estructura:
Public Struct datos
    asunto As String
    color As Integer
    fecha As Date
    descripcion As String
End

Que nos permitirá almacenar los datos de un "recordatorio", osea un asunto , un color (para determinar el nivel de importancia del asunto, una fecha y la descripción del asunto.

El usuario manejará todas las opciónes desde el siguiente formulario:
Haciendo las acciones habituales con los datos: añadir, modificar, borrar, desplazarnos por los registros.
Ademas he añadido la opción de "leer datos" y "guardar datos", para que sea posible tener los datos en el disco duro salvados.

Internamente, la estructura del programa es asi:

Tenemos la clase GestionarDatos, que tiene los métodos para trabajar con los datos

Y luego tenemos el formulario, donde se ha minimizado el código, usando un objeto de la clase "GestionarDatos", para que haga las acciones que elija el usuario.





Código Fuente:
Clase GestionarDatos
--
--

Descargar















lunes, 7 de julio de 2014

Truco: Como Buscar Ayuda En Gambaswiki.org

Truco: 

Como Buscar Ayuda En Gambaswiki.org


GambasWiki.org, es el nuevo sitio donde esta la documentación oficial del proyecto de gambas3, y nos sirve para darnos información de los compoenentes y del lenguaje en si.

Actualmente no existe una forma "fácil" de buscar por palabra o concepto en dicha ayuda. Pero Bernoït me comentó el siguiente truco:

Poner en el navegador de google las palabras: +site:http://gambaswiki.org/wiki/ Palabra_Buscada

Donde Palabra_Buscada es el termino que buscamos información.

Por ejemplo este es un ejemplo:

 

El mismo truco que explica Bernoît, se puede aplicar a otros sitios, por ejemplo el del curso de gambas:

+site:http://cursogambas.blogspot.com Palabra_Buscada







Otra interesante página donde podeis buscar información, es la que ha preparado el administrador de gambas-es.org, jguardon , que es capaz de buscar información en los siguientes sitios: gambaswiki, gambasdoc y en gambas-es.org.








Para más información, se abrió  un hilo en el foro de gambas-es.org: enlace



Saludos

Nueva Versión: Gambas 3.5.4

Nueva Versión: Gambas 3.5.4


Ayer, publicó Benoît Minisini (enlace), la nueva versión de Gambas3, y ya la podéis descargar en:

http://gambas.sourceforge.net/en/main.html

Se espera que en breve (varios días) se actualice los repositorios  PPA menh, que es la forma más cómoda de instalar, mientras tanto habrá que compilarlo.

Para compilarlo, aquí os dejo el enlace donde lo  explico:   instalar gambas compilándolo.

Nota: Esta explicado para hacerlo con la 3.2.1,  simplemente tendréis que cambiar el 3.2.1 a 3.5.4.


Log de Cambios:
Trae 28 bugs arreglados,
[CONFIGURACIÓN]
* NUEVO: La macro GB_FIND ahora busca en los archivos de un directorio más profundas.
* NUEVO: Agregar una nueva macro autoconf que pueden comparar los números de versión.

[Entorno de desarrollo]
* Error: editor de formularios: Establecer la propiedad "Invertir" de un contenedor hace ahora
   tengan accidentes.
* Error: resolver automáticamente los conflictos en los archivos de configuración de proyectos de
   teniendo los del repositorio.
* Error: Fijar el soporte del explorador personalizado.
* NUEVO: Agregar Chromimum a la lista de los navegadores.
* Error: Creación de un nuevo proyecto SDL comprueba correctamente todos los componentes necesarios.

[Ejemplos]
* Error: NeHeTutorial: error de compilación Fix.

[INTÉRPRETE]
* Error: Agregue una pequeña zona reservada en la pila para la función Eval (), por lo
   que el depurador puede devolver el contenido de una variable después de una pila
   desbordamiento sin levantar un nuevo error de desbordamiento de pila y luego estrellarse.
* Error: System.TimeZone ahora devuelve el valor exacto, es decir, el número de
   segundos que deben añadirse * * para ir a UTC.

[Compilador]
* Error: recaudar correctamente un error de sintaxis ahora, cuando hay algo entre
   la parte izquierda de una asignación y el operador de asignación.

[GB.DB.POSTGRESQL]
* Error: Hacer gb.db.postgresql compilar con nuevas cabeceras postgresql ubicación.

[GB.DEBUG]
* Error: Fijar un posible accidente si el proceso de depurado se detiene durante el
   Depurar Lee evento.

[GB.FORM]
* Error: ValueBox.ReadOnly funciona como se espera ahora.
* Error: TableView.Clear ahora oculta la celda editada actual.

[Gb.gtk]
* Error: la propiedad TextArea.Text se puede establecer en una cadena nula correctamente ahora.
* Error: Fijar el comportamiento de auto-redimensionar etiquetas.
* Error: Configuración Application.Font actualiza ahora la fuente de todos los controles.

[GB.GUI.BASE]
* Error: Draw.Line () toma en cuenta correctamente la propiedad LineStyle en
   todos los casos ahora.
* Error: Fijar los patrones de guiones utilizados para la ejecución del Draw.LineStyle
   propiedad.

[GB.IMAGE]
* Error: Vuelva a escribir el código fuente de la clase ImageStat porque la licencia de PHP es
   no compatible con la GPL.

[GB.JIT]
* Error: explícitamente buscar la 'llvm-c/Core.h' archivo de inclusión.
* Error: Fijar LLVM comparación de versiones.

[GB.NCURSES]
* Error: Añadir GB_END_DECLARE a la clase de entrada a tengan accidentes (en
   cygwin único?). Reportado por Nigel Gerrard.

[GB.NET.CURL]
* ERROR: Las propiedades VerifyPeer y VerifyHost son realmente tomados en
   cuenta ahora.

[GB.NET.POP3]
* Error: Pop3Client: Levantar un error si el método Open () falla, y correcta
   abortar la conexión.

[GB.OPENSSL]
* Error: Cipher [] y Resumen [] ahora la ventaja de su argumento de método correctamente.
* Error: Fijar mal uso de la API de cadena en la clase de cifrado. consecuentemente
   Cipher []. Encrypt () no se bloquea más.

[GB.SETTINGS]
* Error: Enumerar `Settings.Keys [Slot]` (las llaves de una ranura específica) hace
   No rompas más la enumeración de `` (los nombres de las ranuras) Settings.Key.

[GB.QT4]
* Error: Fijar el comportamiento de auto-redimensionar etiquetas.

[GB.XML.HTML]
* Error: Fijar la aplicación de HTMLDocument.GetElementById ().

Versión original de log arreglados:
http://gambaswiki.org/wiki/doc/release/3.5.4?w


Enlace de descarga directa en sourceforce:
http://sourceforge.net/projects/gambas/files/gambas3/gambas3-3.5.4.tar.bz2/download

Y como dice Benoît: disfrutenlo !!!


Saludos

Julio

viernes, 4 de julio de 2014

Ejemplo de Uso de función recursiva: Obtener lista de archivos y directorios

Ejemplo de Uso de función recursiva: Obtener lista de archivos y directorios

Básicamente es una función que se llama a si misma, hasta llegar a una cierta condición la cual hace que termine el proceso.

El ejemplo típico es el cálculo del factorial de un número:



También se usa para crear  fractales:




Os dejo un simple ejemplo, con el cual consigo que se liste los archivos, subdirectorios y archivos de estos dada una ruta, usando la recursividad:




Saludos


Jsbsan