09 octubre 2013

Programación de listas

La variable de tipo "list" es sin duda, la que adquiere mayor relevancia y versatilidad en la programación con Omnis Studio, de hecho, resulta imprescindible a la hora de construir aplicaciones para la web y dispositivos móviles. Una variable “list” puede suministrar los datos (contenido) y el formato para muchos de los componentes visuales JavaScript que contendrán sus aplicaciones, tales como: “droplists”, “menus”, “data grids”, “complex grids”, y “tree lists”.

Una variable “list” puede ser definida en base a una “clase de datos SQL” (schema, query, o table). En ese caso, la lista obtiene la definición de cada columna según fueron creadas en la propia clase SQL. Cada “list” puede contener un número ilimitado de líneas y un máximo de 32.000 columnas, claro está, si la capacidad de memoria del dispositivo lo permite.

Omnis Studio proporciona los métodos necesarios para crear, definir y modificar variables “list” y que vamos a repasar brevemente a continuación. Le sugiero que consulten el manual en español, para obtener más información sobre el uso de variables “lis" (http://framosmu.blogspot.com.es/2010/03/manual-de-programacion-omnis-studio-en.html).

 

Crear una lista

 

En primer lugar será necesario crear la variable “list” y definir sus columnas. Con éste propósito podemos optar por el método $define, pero también podemos hacer uso del método $add del grupo de métodos $cols, veamos ambos casos:

Do myList.$define(var1,var2,var3) ;; myList y var’s deben ser declarados

o


Do myList.$cols.$add('myFieldName',kCharacter,kSimpleChar,255)
Do myList.$cols.$add('anotherColumn',kInteger,kLongInt)
Do myList.$cols.$add('yetAnotherColumn',kBoolean)


En este ejemplo, se crea una “list” con tres columnas. Los parámetros del método $add describen el nombre, tipo, subtipo y longitud de cada columna. Sin embargo y dependiendo del tipo de columna, no todos estos parámetros serán necesarios.

Añadir datos a una lista

 

En segundo lugar, añadiremos algunos datos. Usaremos el método $add con algunos valores pasados directamente como parámetros y también lo usaremos para crear una línea vacía:

Do myList.$add('Pepe', 27, kTrue) ;; Añade una línea con los valores suministrados
Do myList.$add() ;; Agrega una línea vacía


También podemos añadir el contenido de una variable de tipo “row” a la lista. Para ello, podemos hacer uso del método $add, en éste caso el método $add le pasa una referencia a la variable “row”:

Do myList.$add().$assignrow(myRow,kTrue)

Note que los métodos de los que podemos hacer uso detrás de $add, deben ser usados con la sintaxis descrita al añadir una línea vacía “$add()”. Esto causa que la función $add devuelva una referencia a la función $assignrow, para que ésta pueda agregar los valores de myRow. El segundo parámetro determina si se usaran los nombres de las columnas o su orden, para emparejar los datos. También se podría hacer uso de los métodos $addafter y $addbefore para agregar los datos antes o después de una determinada columna.

Eliminar líneas de una lista

 

Es posible que en ocasiones también debamos eliminar algunas líneas de la lista. La manera más fácil de hacer esto es utilizando el método $remove. Por ejemplo, si quisiéramos eliminar la línea actual de la lista usaríamos lo siguiente:

Do myList.$remove(myList.$line())

Si quisiéramos eliminar todas las líneas la lista, que cumplan una determinada condición, tendremos que hacer uso en primer lugar de la función $search:

Do myList.$search($ref.miNombreCampo='Pepe', kTrue)

Mediante éste método se seleccionaran todas las filas que contengan el valor 'Pepe' en la columna 'miNombreCampo'. Después las eliminaremos del siguiente modo:

Do myList.$remove(kListDeleteSelected)

También podríamos hacer uso de la constante kListKeepSelected para causar la eliminación de todas las líneas no seleccionados.

Copiar y fusionar una lista

 

A veces es posible que queramos fusionar listas, o copiar los contenidos de una lista sobre otra, para esto último podemos hacer lo siguiente…

Calculate NuevaLista as ViejaLista

…pero, si lo que queremos es copiar la definición de una lista sobre otra usaremos el método $copydefinition:

Do NuevaLista.$copydefinition(ViejaLista)

Este método creará una lista vacía con la definición de la lista inicial. Finalmente, si lo que queremos es agregar  o fusionar, los datos de una lista sobre otra, debemos usar el método $merge:

Do NuevaLista.$merge(ViejaLista,kTrue)

En este caso se añadirán los datos de ViejaLista a NuevaLista. El segundo parámetro determina si queremos hacer la correspondencia de datos usando los nombres de las columnas o bien su orden.

Eliminar listas

 

Si lo que pretendemos es eliminar el contenido de una variable de tipo “list”, podemos hacer uso del método $clear:

Do myList.$clear()

Si también quisiéramos eliminar la definición de sus columnas, podríamos usar $define pero sin pasarle parámetro alguno:

Do myList.$define()

Nota:
Esto es sólo un pequeño ejemplo de cómo hacer uso de las variables de tipo “list”, éste artículo ha sido primero publicado en ingles por Andreas Pfeiffer. Puede obtener más información en español sobre la programación con Omnis Studio en Aula Omnis.

04 octubre 2013

Nueva versión Omnis Studio 6.0.1


La recientemente liberada versión de Omnis Studio 6.0.1 mejora y amplia su apuesta por la programación con Omnis Studio JavaScript Client.

No hace mucho tiempo que los desarrolladores en Omnis Studio hemos podido experimentar la programación con jsClient. El desarrollo de aplicaciones para la web y dispositivos móviles con sus particularidades como los diferentes tamaños de pantalla, nunca ha resultado tan rápida, cómoda y sencilla. Omnis Studio jsClient permite controlar de forma sencilla prácticamente cualquier pantalla y cualquier dispositivo.

Algunas de las cosas que incorpora la versión 6.0.1 son:

  • Nuevos tamaños de pantalla y dispositivos como el BlackBerry® Q10 y el Samsung® Galaxy S4, y otros a añadir por los desarrolladores.
  • Permite la creación de bases de datos locales, con opción de sincronización para dispositivos Android, posibilitando así la creación de aplicaciones móviles independientes en ésta plataforma.
  • Nuevo control "Trans Button" que proporciona mayor interactividad en aplicaciones para la web y dispositivos móviles.
  • Mejora en el rendimiento de las "String Tables" que dan soporte a las aplicaciones multi-lenguaje.
  • Soporte para el modo 'Responsive Web Design' de Firefox, que permite probar los diferentes diseños realizados para dispositivos móviles sobre un navegador de escritorio, evitando tener que alternar entre dispositivos.

Con el lanzamiento de la versión 6.0.1, Omnis Studio sigue ofreciendo una opción rápida y flexible en la creación de aplicaciones para la web y dispositivos móviles. El jsClient de Omnis Studio nos permite crear rápidamente aplicaciones que se ejecutarán sobre un navegador en prácticamente cualquier dispositivo y en cualquier plataforma, incluyendo ordenadores portátiles, tabletas y smartphones y todo desde una misma base de código.