ene 29

Casilleros sincronizados V

Posted in v7, vDevelop

Propieades de los controles objetoSeguimos con el formulario principal, y ahora que tenemos todos los objetos, solo hay que indicar las propiedades en los controles objeto que hemos incluido en el formulario. En la imagen tienes las propiedades de cada uno de los controles. A la izquierda el control objeto para el casillero de Familias y a la derecha el control objeto para el casillero de articulos.

Para que todo funcione como es debido, necesitamos 3 eventos en este formulario,

– Uno INIT_FORM, para inicilizar el formulario,

– otro SEL_FAMILIAS, para ejecutar cuando se pulsa sobre una celda del casillero de familias

– y el tercero SEL_ARTIC, para ejecutar cuando pulsamos sobre una celda del casillero de articulos.

Aqui los teneis:

Eventos del formulario principal

A estas alturas ya deberiais saber que es lo que hace cada proceso, solo con verlo.

También necesitamos 3 conexiones de eventos para indicar en que momento deben ejecutarse los eventos que acabamos de crear, asi que aqui los tienes,

Conexiones de eventos

– La primera de las conexiones ejecuta el evento al inicializarse el formulario,

– la segunda, ejecuta el evento SEL_FAMILIAS cuando pulsamos sobre una celda del casillero de familias

– y la tercera, es la encargada de ejecutar el evento SEL_ARTIC cuando pulsamos sobre la celda de un articulo.

PDF Printer    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Casilleros sincronizados V
ene 28

Velneo V7 en la web

Posted in HTML, v7, velneo, vWebClient

A raiz de una de las preguntas realizadas por mi amigo F.J.Vila (Geproin) en su articulo de la entrevista del viernes, me hizo pensar, y en ese preciso momento no supe concretar la pregunta que me realizo.

F.J.Vila: ¿Qué hecha en falta en la herramienta?

Pepeto: Mayor integración web, y no precisamente: vWebClient

Ahora, más tranquilo y pensando nuevamente en ello, voy a tratar de aclarar lo que deberia haberle contestado,

Cuando hice referencia a que vWebClient no erá la solucion que Velneo debia aportar a la web, estaba en lo cierto, pero, ¿cual es la solución?

Sin querer desmerecer el trabajo que esta realizando Velneo en V7, que es magnifico y digno de admiración, aunque todo hay que decirlo, deberían centrarse un poco más en solucionar bugs, que en nuevas funcionalidades.

Y digo esto, por que no considero que vWebClient sea una mala herramienta, es más correcto decir, que no es la solución que los desarrolladores deseariamos, o al menos, yo mismo.

¿Por qué no es la solución apropiada?

Porque, vWebClient controla los enganches de los Clientes, y parte del problema es el coste de las licencias, aunque no es este el mayor problema, ya que tal y como hizo saber AlfonsoGu en su articulo de ayer, el precio podria ser negociable, incluso gratuito.

Pero, incluso a coste cero, vWebClient no es la solución, por otra razón, es un pluing para Windows, y por tanto no es multiplataforma, al menos de momento.

Pero, aunque vWebClient fuera multiplataforma, seguiría sin ser la solución, ¿por qué?.  Pues porque desgraciadamente, a veces, falla el suministro electrico, la ADSL se cae, el S.O. se bloquea, o incluso se me podría caer la taza de café en mi portatil, y que desastre, bloqueos, usuarios colgados, portatil averiado, y siempre cuando más urgente es el trabajo que estás realizando. Y todo esto, supune que debe haber una persona siempre pendiente del servidor para solucionar los problemas a travésd e vAdmin.

Entonces, ¿cual es la solución?

Pues, bajo mi punto de vista, la solución perfecta, pasaria por un verdadero Cliente Web, y que quiero decir con esto, pues sencillo:

– Un cliente web que retorne HTML al navegador

– Un cliente web que al realizar una petición al servidor, inicie la conexión con el servidor en el momento, realice la consulta a la base de datos, y cierre la conexión con el servidor. Dejando libre la licencia de usuario en primer lugar, evitando bloqueos desagradables del servidor ya que las conexiones no serian permanentes.

– Modo de trabajo, Iniciar conexión, realizar consulta en base de datos, cerrar conexión. Tal y como lo hacen el resto de los lenguajes en la web, cuando trabajan con bases de datos SQL.

Claro, para Velneo esto puede suponer, no cobrar las licencias web, y esto es un problema. Pero puede seguir vendiendo licencias de vClient para aquellos que desean trabajar con “vServer Local”.

Además, no creo que esto suponga mucho problema para velneo, sino todo lo contrario. Seria la verdadera prueba de apertura de Velneo al mundo, a la web y a luchar por un puesto entre los grandes. Si entre los grandes, porque si algo necesita Velneo es abrirse a los estandares actuales, y ¿cual es el mayor estandar en la web?, pues HTML.

PDF    Enviar artculo en formato PDF   
comments: 5 »
ene 28

Comic Reader 1.0 por dentro

Ya hemos visto lo que puede hacer Comic Reader 1.0, pero, como está desarrollado es otra historia.

En realidad es tan sencillo que lo vamos a ver en unas lineas, y el resto tendreis ocasión de verlo cuando se publiquen las Oppen Apps de los participantes el próximo día 1 de marzo.

Proyecto de datos de Comic Reader 1.0En primer lugar el proyecto de datos, solo tiene 2 tablas: COMICS (maestra) y PAGINAS (submaestra), una para almacenar los comics y la otra para almacenar cada una de las fotos de un comic. Tambien tenemos 3 variables globales, COMIC_ACT y PAGINA_ACT para conocer en todo momento el #ID del comic y de la página que estamos visualizando en cada momento, una variable DEBUG utilizada para depuración de errores y, por supuesto, el ESQUEMA de tablas exigido en las bases del concurso.

Por otro lado, tenemos el proyecto de aplicación, que tiene un poco mas de complejidad, pero no demasiada, veamoslo.

Proyecto de aplicación de Comic Reader 1.0En primer lugar, vemos el objeto AUTOEXEC, cuya única misión es indicar cual será el formulario principal utilizado para la ejecución de la aplicación, en este caso, COMIC_READER.

Seguimos, COMIC_READER es un formulario sin origen, que usa los otros dos formularios sin origen, UNA_PAGINA_PAR y UNA_PAGINA_IMPAR para mostrar las páginas del comic, y los procesos VER_PAGINA_PAR y VER_PAGINA_IMPAR, que son los encargados de buscar la pagina correspondiente al comic seleccionado en las tablas de datos.

La parte mas sencilla, son los objetos de la carpeta Mantenimiento de comics, que contiene los objetos correspondientes al proceso de Alta y Edicion de la ficha de un comic.

En último lugar, el proceso COMICS_IMPORTAR_DATOS, se encarga de realizar la importación de las fotos y guardarlas en el comic seleccionado.

Podreis verlo con más detalle cuando este disponible la descarga.

PDF Creator    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Comic Reader 1.0 por dentro
ene 27

Casilleros sincronizados IV

Posted in v7, vDevelop

Formulario principal con casillerosSeguimos con el ejercicio y ahora debemos crear el formulario que vamos a utilizar como interfaz para el usuario.

Como se puede apreciar en la imagen adjunta, en nuestro formulario necesitamos incrustar 2 controles objeto, uno para mostrar el casillero de Familias (a la izquierda de la imagen) y otro para mostrar el casillero de Articulos (en que aparece seleccionado a la derecha).

Los botones ACEPTAR y CANCELAR que vemos en la parte inferior no son necesarios, pero los he dejado, ya que no afectan al resultado final. Solo indicar que he incluido un botón INICIALIZAR DATOS que se encarga de crear los registros en las tablas para poder ver el ejemplo en ejecución, y dicho botón solo es necesario pulsarlo en la primera ejecución, pues luego los registros ya estan creados.

Antes de ver las propiedades de los Controles objeto, debemos crear los 2 procesos que vamos a necesitar para mostar los datos en cada uno de los casilleros.

El primero de ellos, el que carga la lista de familias en el casillero de la izquierda, no puede ser mas simple. Carga la lista de familias, y retorna la lista a la salida.

Pero si aún te quedan dudas, puedes ver el proceso y sus propiedades para que no cometas errores al definirlo.

Atrevete a realizar el 2º proceso, el que carga la lista de articulos.

Para ello, debes tener en cuenta que solo debes mostrar los articulos de la familia seleccionada en el primer casillero, y también, que habiamos creado una variable global para saber cual es la familia seleccionada en cada momento.

Si aún no lo has conseguido, aqui abajo tienes el proceso y las propiedades. Recuerda que posiblemente tencas que cambiar algun dato, dependiendo de los identificadores que hayas utilizado al crear las tablas y la variable.

Solo necesitas cargar la lista de familias, utilizando la variable global como primer componente para la busqueda por el indice ID, leemos la ficha seleccionada, y a continuación cargamos los artículos de esa familia por medio de los plurales, y finalmente retornamos la lista de articulos.

En ambos procesos debes tener encuenta cual es la entrada y la salida, y que vamos a utilizar estos procesos desde nuestro formulario “sin origen”.

PDF Printer    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Casilleros sincronizados IV
ene 26

COMIC Reader 1.0 a concurso

Posted in aplicaciones, OpenApps, v7

Desde este blog hemos decidido poner nuestro granito de arena y participar en el concurso de Open Apps de Velneo con una pequeña aplicacion llamada COMIC Reader 1.0

Esta aplicación, como podeis imaginar tiene la función principal de permitir la lectura de comics

Interfaz de COMIC reader 1.0El funcionamiento es muy sencillo, en la imagen podemos ver el interfaz de la aplicación, y vemos como tras acceder a la misma, solo tenemos que seguir unos sencillos pasos para ponerla en marcha:

  1. Seleccionamos el comic que vamos a visualizar en la rejilla de la parte superior izquierda, un simple click, bastara para comenzar a leer el comic.
  2. Para proceder a la lectura del comic, solo tenemos que pulsar los botones Avanzar o Retroceder que se muestran en el margen superior derecho de la imagen.

Aqui tenemos otra imagen de la aplicación en ejecución:

Otra imagen de COMIC reader 1.0

Crear un nuevo comicPara introducir los comics en la aplicación, necesitamos crear en primer lugar la ficha del nuevo comic, para ello pulsa sobre la opción Nuevo que hay en la parte superior del interfaz, y solo tenemos que introducir el nombre del comic que vamos a guardar en esta ficha.

Una vez echo esto, solo queda un paso mas: pulsar sobre el botón Importar fotos que hay junto al botón Nuevo, luego seleccionamos la ficha del Comic donde vamos a guardar las fotos, y por ultimo seleccionamos la carpeta del disco donde se encuentran las imagenes del comic.

Para esta operación, solo es necesario tener en cuenta, un par de detalles:

  1. Las fotos deben estar enumeradas en el mismo orden en que se va a leer el comic.
  2. Todas las fotos deben estar en la misma carpeta del disco, utilizando diferentes carpetas para cada comic.
  3. Si elegimos un comic que ya contiene imagenes, estas serán borradas antes de realizar la importación de las nuevas fotos.

Formulario de edición de un comicSi realizamos doble click, sobre uno de los comics de la rejilla, podemos ver el formulario de edición de un comic, mostrandose una rejilla con las fotos debidamente ordenadas.

Para evitar posibles reclamaciones de la S.G.A.E., debo añadir que en las imagenes, se muestra el StoryBoard de un Corto que fuí director y realizador en 2008 con un grupo de amigos que se prestarón voluntarios para participar en una campaña local contra las drogas, titulado “El botellón”. La aplicación la podreis encontrar con este “storyboard” incluido, y libre de royalties.

Nada mas que decir, espero que os guste y que os permita buenos momentos de ocio en la lectura de vustros comics.

PDF    Enviar artculo en formato PDF   
comments: 1 »
ene 25

Pack: Las tablas de datos a fondo

Posted in packs

En este pack, he agrupado todos los artículos referentes al Objeto:  Tabla de datos, para que podais localizarlos más facilmente:

Las tablas de datos en detalle

Las tablas de datos I: las tablas

Las tablas de datos II: campos

Las tablas de datos III: enlaces a maestros

Las tablas de datos IV: enlace a tabla estática

Las tablas de datos V: indices

Las tablas de datos VI: actualizaciones

Las tablas de datos VII: plurales

Las tablas de datos VIII: eventos

Tipos de campo en las tablas de datos

Tipos de indice en las tablas de datos

Utiliza la categoría PACK para localizar todos los artículos que han sido divididos por ser demasiado extensos.

PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Pack: Las tablas de datos a fondo
ene 25

¡Ser constante es bueno!

Posted in Sin categoría

Si, la constancia suele ser  buena en muchos de los aspectos de la vida, pero no es el tema de hoy.

Hoy vamos a tratar otro tema, el valor de la CONSTANTE, un objeto infravalorado por la mayoria de los desarrolladores y por que no dedirlo, por mi mismo hasta descubrir el poder de este objeto.

Muchas veces no vale con que te cuenten las cosas, las tiene que descubrir uno mismo para entender el valor que tienen, da igual, si has leido en un blog un artículo explicandote un objeto determinado, con el tiempo olvidarás el artículo y es en el momento en que necesitas el objeto en cuestión cuando te das cuenta del tiempo perdido haciendo las cosas de mala manera.

Y aqui es donde la CONSTANTE pasa por ser uno de esos objetos que te dejan indiferente, aunque no debería. Vamos a ver porqué:

Todos hemos tenido la necesidad, y ahora más de realizar un proyecto multiidioma, y como ahora nos lo ha solucionado Velneo con la herramienta vTranslator, pues nos conformamos y punto.

Pero alguién se ha preguntado en realidad, cuanto cuesta la traducción de una aplicación a otro idioma, ¿en dinero? mucho, pero sobre todo en tiempo, ¡más aún!.

ConstanteAún no lo has pillado, pues te lo explico, todos los menús que creamos para las interfaces de nuestras aplicaciones tienen siempre las mismas opciones repetidas, los mismos botones (Alta, Modificar, Borrar, Localizar, etc.), los mismos textos, mensajes al usuario. El traductor, debe localizar y traducir la misma palabra decenas de veces en cada proyecto.

TraduccionSuponte, por un momento que todo eso lo trasladamos a las Constantes, y utilizamos la constante como contenido inicial en los botones y otros objetos, en vez de escribir el texto en el idioma correspondiente.

A primera vista, esto no es una ventaja, ya que en vDevelop no podrás ver si lo estas haciendo correctamente, o no. Ni siquiera pulsando la tecla FIN para ver como quedaría el formulario en ejecución. Un pequeño inconveniente que al menos de momento no esta solucionado.

Pero tiene una gran importancia este trabajo, hemos creado algunos objetos más, que podriamos haber ahorrado, pero en el momento de definir las constantes, si hemos incluido varios Idiomas en el proyecto, ya podremos traducir los nombres en esos idiomas.

Contenido inicialCuando ejecutes el proyecto, podras cambiar el idioma, pero todos los objetos estarán traducidos correctamente, y como por arte de magia, no hemos necesitado vTranslator para esta operación y, lo mejor de todo, ya tenemos el 90% de la traducción del proyecto realizada.

Previsualizacion del formulario

Solo tendrás que revisar si olvidaste traducir algo, pero seguro que no será demasiado.

PDF Download    Enviar artculo en formato PDF   
comments: 1 »
ene 25

Las constantes y otros objetos

Posted in v7, vDevelop

La definición de constante, es aquella en la que el valor almacenado en una estructura de datos no cambia a lo largo de la ejecución de la aplicación.

Por lo demás, se definen exactamente igual que las variables globales, y pueden ser de los mismos tipos que ellas.

Por tanto, podemos utilizar las constantes para definir valores invariables como:

$PI = 3.14

Otros objetos del proyecto de datos

Si te fijas en el panel de nuevos objetos del proyecto de datos, puedes ver que hay mas objetos de los que hemos visto hasta ahora, pero no desesperes que ya los veremos más adelante, por el momento vamos a dar por concluidos los artículos que he dedicado a proyectos de datos, y vamos a continuar con otras cosas.

Create PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Las constantes y otros objetos
ene 22

Change a LML

Posted in LML, XML

Cambia a LML, si te atreves. 😀

En realidad, éste artículo me refiero a “change” como otra mas de las etiquetas básicas del lenguaje LML, y tiene como misión, cambiar el simbolo utilizado como separador entre el número de nivel y la etiqueta, que por defecto es “:

Cuando escribimos un archivo en LML, se utilizara por defecto el simbolo o caracter especificado en la primera linea junto a la etiqueta begin,

Según esto, en este ejemplo, <0:begin language=”lml> se utilizará el carácter “:” como separador y

según este ejemplo, <0#begin language=”lml> se utilizará el carácter “#” como separador

pero en LML podemos cambiar este simbolo en cualquier momento por otro más adecuado al contenido de nuestro archivo y solo tenemos que indicarlo con la sentencia

<0:change sep=”$”> y la siguiente linea debería ser escrita como,

<0$change sep=”|”> y la siguiente linea debería ser escrita como,

<0|change default> con esta sentencia, el separador en la siguiente linea volverá a ser “:”

Debes notar que el separador indicado en los atributos, debe utilizarse siempre a partir de la siguiente etiqueta.

Veamos un ejemplo de lo aprendido hasta ahora,

<0:begin language=”lml”>

<1:etiqueta-1>valor-1

<2:etiqueta-2>valor-2

<2:etiqueta-3>valor-3

<2:change sep=”|”>

<2|etiqueta-4>valor-4

<2|etiqueta-5>valor-5

<1|change default>

<1:etiqueta-6>valor-6

<0:end>

Y esto no termina aqui …

Create PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Change a LML
ene 22

Begin in LML

Posted in LML, XML

Empecemos con LML y que mejor manera de ver las 2 etiquetas basicas: BEGIN y END

Para construir un archivo bien estructurado en LML, la primera etiqueta de la primera linea debe ser BEGIN,

Debemos iniciar todos los archivos de la siguiente forma

<0:Begin language=”lml>NULL

con esta etiqueta iniciamos la estructura de nuestro archivo, pero debemos observar, que delante de la etiqueta begin, indicamos el número de nivel correspondiente a dicha etiqueta, el “0“. Y como separador entre el número de nivel y la propia etiqueta, hemos utilizado “:” (dos puntos), y podria utilizarse cualquier otro signo pero explicaremos esto más adelante.

a continuación debes indicar todas las etiquetas necesarias para construir tu archivo LML, pero de eso hablaremos en otro artículo.

Aclarar también que para escribir cada etiqueta, no es necesario utilizar una nueva linea y retorno de carro, pero si es aconsejable, ya que facilita enormemente la lectura a los usuarios. Entendemos que la maquina será capaz de leer el archivo en cualquier condición siempre que siga una estructura apropiada, pero, a veces también resulta imprescindible mirar el contenido con un simple editor de texto. 😉

y para terminar el archivo LML debemos utilizar END

Tiene gracia, si lo que prentendía con LML era eliminar las etiquetas finales del “XML”, porque necesitamos END para construir nuestro archivo LML.

Y tiene una explicación lógica,

1. porque es la única etiqueta que vamos a usar para “cerrar”

2. porque indica el final del archivo, y con esto nos asegurarmos de que ha sido creado o leido correctamente

Finaliza el archivo con

<0:end>NULL

en este caso la etiqueta de Nivel también es “0“, ya que regresamos al nivel inicial para finalizar el archivo.

Asi que, en adelante todos nuestros archivos empezaran y finalizaran según este ejemplo

<0:Begin language=”lml”>

contenido del archivo LML

<0:end>

y sobre el contenido ya hablaremos en otra ocasión.

PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Begin in LML