< Características avanzadas > Programas xjs > Referencia de Objetos > Extensiones básicas

Referencia de extensiones básicas

<< Click to Display Table of Contents >>

Navegación:  Características avanzadas > Programas xjs > Referencia de Objetos >

Referencia de extensiones básicas

Contenido

  Objeto Aplicación

  Objeto dibgrf

  Objeto Dialogo

 

 

Objeto Aplicación

Métodos

DEBUG - esta sentencia detiene la ejecución del programa y abre el diálogo de depuración. En la línea Comando o variable se pueden especificar: un sentencia válida de JScript incluyendo las extensiones, o bien un nombre de variable. Al hacer clic en Acepta se ejecutará la sentencia, y su valor de retorno si lo hubiera se mostrará en el visor del diálogo, si se teclea un nombre de variable aparecerá en el visor el valor actual de esa variable.

Si teclea por ejemplo Math.E, al hacer clic en Acepta aparecerá en el visor el número 2.71828182845905 que es el número de Euler.

El depurador guarda un histórico de los comandos ejecutados, pudiendo acceder a ellos con los botones Anterior y Siguiente.

ccmodulos () - retorna la cadena de texto correspondiente a los módulos de la aplicación instalados, tal como figura en la ventana de opciones de la aplicación.

diaavisa (título, texto) - abre un diálogo de aviso, título es la cadena de texto que figurará en el título del diálogo, y texto es la cadena de texto que figura como mensaje del diálogo. Al hacer clic en el botón Acepta continuará la ejecución del programa.

diaedita (título, texto[, defecto]) - abre un diálogo con un campo editable, título es la cadena de texto que figurará en el título del diálogo, y texto es la cadena de texto que figura como mensaje del diálogo, defecto es el contenido que por defecto tendrá el campo de edición. Retorna el valor del campo de edición cuando se pulsa el botón Acepta, y retorna null al pulsar Cancela.

diaerror (texto) - muestra un diálogo de error con el mensaje texto y el título ERROR. Al pulsar el botón Cierra continuará la ejecución del programa.

diainforma (título, texto) - abre un diálogo de información, título es la cadena de texto que figurará en el título del diálogo, y texto es la cadena de texto que figura como mensaje del diálogo. Es análoga a diaavisa pero en este caso el diálogo presenta un icono de información en lugar del icono de aviso.

diapregunta (título, texto [,botón1][,botón2][,...]) - abre un diálogo de interrogación, título es la cadena de texto que figurará en el título del diálogo, y texto es la cadena de texto que figura como mensaje del diálogo. Los argumentos botón1, botón2, etc., permiten especificar los literales que aparecerán en los botones del diálogo. Si no se especifican estos argumentos, el diálogo aparecerá con los botones Sí y No. Retornando 0 al hacer clic en el primer botón, 1 para el segundo botón y así sucesivamente. Por ejemplo:

var que= diapregunta ("Lista a Excel", "Quiere volcar la lista actual a Microsoft Excel", "Excel","Preliminar","Impresora");

director ([archivo][, extensión]) - retorna el nombre del directorio o carpeta en la que se instaló la aplicación. Si se trata de una instalación en red, retorna el directorio de la instalación cliente o directorio privado. Si es una instalación monousuario retorna el directorio de instalación de la aplicación. Si se suministran los argumentos archivo y extensión, retornará estos argumentos concatenados al nombre del directorio en la forma directorio\archivo.extensión.

error ([texto]) - finaliza la ejecución del programa con un diálogo de error. Si no se suministra el argumento texto se muestra en el diálogo el último mensaje de error que se almacenó en la propiedad error, en caso contrario se muestra el texto almacenado en texto.

fecagrega (numfecha, días[,meses][,años])) - es el método para incrementar o decrementar fechas. El argumento numfecha debe corresponder a un número representando una fecha en la forma aaaammdd. El argumento días es el número, positivo o negativo, que indica los días que se añadirán o sustraerán a numfecha. El método retorna un número representando la fecha, en formato numérico aaaammdd, resultante de la operación.

El parámetro meses, opcional, es el número de meses que se añadirán o restarán a numfecha. Por ejemplo, para obtener la fecha correspondiente a la fecha actual del sistema más tres meses: fecagrega (hoy(), 0, 3)

El parámetro años, opcional, es el número de años que se añadirán o restarán a numfecha.

fecano ([numfecha]) - retorna el año correspondiente a numfecha. El argumento numfecha debe corresponder a un número representando una fecha en la forma aaaammdd (año con cuatro dígitos, mes del año con dos dígitos, y día del mes con dos dígitos), por ejemplo el ocho de marzo del 2001 se expresa con el número 20010308. Si no se especifica numfecha retorna el año correspondiente a la fecha establecida en el sistema en que se ejecuta el programa.

fecdia ([numfecha]) - retorna el valor numérico correspondiente al día del mes de la fecha almacenada en numfecha. Si no se especifica el argumento numfecha, retorna el número correspondiente al día del mes de la fecha del sistema.

fecdianombre([numfecha]) - retorna el nombre del día de la semana correspondiente al valor de fecha numfecha. Si no se especifica el argumento numfecha, retorna el nombre del día de la semana correspondiente a la fecha del sistema.

fecdias(numfechaini, numfechafin[, enelmes]) - retorna el número de días comprendidos entre las fechas numfechaini y numfechafin ambos incluidos. Si se especifica el argumento enelmes, que es a su vez otro valor de fecha, retornará el número de días del intervalo numfechaini y numfechafin comprendidos en el mes de la fecha representada por enelmes. Por ejemplo: fecdias (20010101, 20010202) retorna 33, mientras que fecdias (20010101, 20010202, 20010208) retorna 2, que son los días entre el uno de enero y el dos de febrero comprendidos en el mes de febrero.

fecha (fecha[, frm]) - analiza el argumento fecha que recibe, y si se trata de una cadena de texto analiza la cadena para determinar si se trata de una fecha en cualquiera de los formatos reconocibles, en caso afirmativo retorna un número correspondiente al valor de la fecha en formato aaaammdd. Si por el contrario recibe un número, lo interpreta como una fecha en formato aaaammdd y retorna una cadena de texto representando la fecha como cadena de textos con formato.

Si no se especifica el argumento frm, la cadena de texto retornada contendrá la fecha en el formato que se especifique en el diálogo Opciones en el campo formato de fechas. Si no se especificó un formato de fechas en el diálogo Opciones, se utilizará el formato de fecha por defecto, es decir dd/mm/aaaa. Los formatos reconocidos para las fechas son los siguientes:

dd - número del día del mes.

ddd - tres primeras letras del nombre del día de la semana: Lun, Mar, Mié, Jue, Vie, Sab, Dom.

dddd - nombre del día de la semana: Lunes, Martes, etc.

mm - número del mes de 1 a 12.

mmm - tres primeras letras del nombre del mes: Ene, Feb, Mar, etc.

mmmm - nombre del mes: Enero, Febrero, etc.

aa - dos últimos dígitos del año.

aaaa - año expresado con cuatro dígitos.

fecha (dia, mes, año) - recibe tres argumentos numéricos correspondientes al día del mes, al número de mes y al año, retorna la fecha en formato numérico aaaammdd.

fecmes([numfecha]) - retorna el número del mes correspondiente al valor de fecha numfecha. Si no se especifica el argumento numfecha, retorna el número del mes correspondiente a la fecha del sistema.

fecmesdias([numfecha]) - retorna el número de días del mes correspondiente al valor de fecha numfecha. Si no se especifica el argumento numfecha, retorna el número de días del mes correspondiente a la fecha del sistema.

fecsemdia([numfecha]) - retorna el número del día de la semana correspondiente al valor de fecha numfecha. El 0 corresponde al lunes, el 1 al martes, etc. Si no se especifica el argumento numfecha, retorna el número del día de la semana correspondiente a la fecha del sistema.

fechavalida(fecha) - retorna verdadero si la fecha que recibe como argumento es una fecha válida, esto es el día está comprendido entre uno y el último día de mes y el mes corresponde a un mes de 1 a 12 o de enero a diciembre. Recibe como argumento una cadena de texto representando una fecha en cualquiera de los formatos admitidos (ver fecha). Por ejemplo fecha válida ("02/04/2004"), fechavalida ("22 enero 2004") retornan verdadero (true), mientras que fechavalida("40/03/2004") o fechavalida("20/15/2004") retornan falso (false).

formato(num[,dec]) - retorna una cadena de texto con el número num formateado según la configuración regional establecida en el sistema en el que se ejecuta, normalmente incluirá separadores de miles y separador decimal si procede. Si se especifica el argumento dec retorna num redondeado al número de decimales expresados por dec.

hora (hora) - recibe un número que representa la hora en formato hhmmss, y retorna una cadena de texto con la hora según el formato establecido en las opciones del programa.

impdiartf (archivo) - abre la ventana preliminar de RTF y muestra en ella el contenido del archivo que recibe. Por ejemplo: impdiartf (temporal("CTR.rtf")). La ventana permitirá hacer búsquedas y copiar-pegar según el modo rtf establecido (ver rtfmodo).

incluir (archivo) - incluye, en el momento de ejecutar el script,  el contenido del archivo que recibe como argumento dentro del código en ejecución, de forma que si el contenido del archivo son sentencias JScript, estas serán ejecutadas en el lugar donde se encuentra la sentencia incluir. Por ejemplo incluir ("c:\\Informes\\cabecera.xjs")

intercrea ([texto]) - crea un diálogo de interrupción, que muestra el botón Interrupción para permitir al usuario parar la ejecución de un programa xjs. Este método no tiene sentido cuando el programa se ejecuta desde la ventana de impresión, pues en tal caso siempre aparece un diálogo de interrupción, pero es de utilidad para la ejecución de procesos o programas que se ejecutan desde carpetas. Para saber si el usuario interrumpió el proceso será necesario utilizar el método inter. Por ejemplo:

intercrea ("Procesando")

for (i=0;i<100000;i++)

   if (inter(i)) salir()

inter([texto]) - durante la ejecución de los programas xjs desde la ventana de impresión, se muestra un diálogo de interrupción que permite parar la ejecución del programa al pulsar el botón Interrupción. En el caso de que el programa este ejecutando un bloque de sentencias, no se interrumpirá su ejecución hasta la finalización del bloque. Para poder interrumpir la ejecución del bloque es necesario preguntar por el valor de retorno del método inter. Si se pulsó Interrupción el método inter retorna true, en caso contrario retorna false. Si se suministra el argumento texto reemplazará los tres puntos (...) que aparecen en el diálogo por la cadena texto.

lc (texto) - busca el texto que recibe como argumento en el archivo de lenguaje seleccionado en la ventana Opciones, si lo encuentra retorna la cadena equivalente. Por ejemplo, si en opciones tiene seleccionado INGLES, lc ("Añade") retorna la cadena "Add".

letra(num[,dec[,gen]]) - retorna una cadena de texto conteniendo el número num expresado en letras. Es de gran utilidad para la impresión de cheques o facturas donde los importes deben figurar en letra. El argumento opcional dec especifica el número de decimales, por ejemplo letra(28.32, 1) retorna "VEINTIOCHO CON TRES", si no se especifica este argumento, el método letra redondea el número num a un entero. El tercer argumento, también opcional, determina el género, masculino o femenino, por defecto es femenino, por ejemplo: letra(567.89) retorna "QUINIENTAS SESENTA Y OCHO", mientras que letra(567.89, 1) retorna "QUINIENTOS SESENTA Y OCHO".

notepad(archivo) - ejecuta el bloc de notas de Windows abriendo el archivo que recibe como argumento. Si el archivo se encuentra en la carpeta de informes no es necesario especificar el camino completo, en caso contrario tendrá que indicar la ruta para encontrar el archivo, teniendo en cuenta que el carácter \ es un carácter especial por lo que debe figurar dos veces. Por ejemplo notepad ("c:\\Documentos\\midocumento.txt")

pancrea (ven[, parm1][, parm2]) - Abre la ventana identificada por la cadena de texto ven, esta cadena de texto es el nombre interno que recibe la ventana, algunas de las ventanas pueden recibir parámetros. Por ejemplo pancrea ("sql", "Select * From auxpro") abre la Ventana Consulta SQL y ejecuta la sentencia Select que recibe como argumento. Otros ejemplos son:

pancrea ("log")                    // Ventana de registro de usuarios

pancrea ("bal", "balsitn")      // Ventana de Balance con el archivo de definición balsitn.bal

pancrea ("inf")                     // Ventana Información de la base de datos

pancrea ("bus")                   // Ventana Búsqueda general

pancrea ("usu")                   // Ventana usuarios / roles

pancrea ("bue")                   // Ventana búsqueda de cartera (Cobros y Pagos)

pancrea ("aux")                   // Ventana de tablas auxiliarea

pancrea ("tip")                     // Ventana de tipos de Conceptos

pandibuja ([nivel]) - Refresca el contenido de la ventana principal leyendo de la base de datos y mostrando el contenido actual en pantalla. El argumento que recibe determina que se quiere refrescar:

1 Concepto actualmente seleccionado en la ventana principal

2 Concepto padre mostrado en la cabecera de la ventana principal

3 La lista completa de Conceptos de la ventana principal

4 Conmutador de edición de la cabecera de ventana principal

5 Archivo

Si un programa da de alta Conceptos deberá a continuación hacer una llamada a este método para que el nuevo concepto aparezca en la ventana principal, si procede.

panejecuta (sql) - Ejecuta la sentencia SQL SELECT que recibe como argumento mostrando el resultado de la consulta en la ventana principal.

panproactual () - retorna el número o identificador del proceso actualmente en ejecución. Cuando desde el menú Concepto Actual se lanza un procesos de cambio de estado, este método permitirá al proceso saber cual es su identificador. A través de este identificador se recuperarán el resto de los datos del proceso como son el estado inicial y estado final del Concepto.

panselactual() - retorna una matriz o array conteniendo los números de identificación (ide) de los conceptos actualmente seleccionados en la ventana principal.

publico([archivo][, extensión]) - retorna el nombre del directorio o carpeta de instalación de la aplicación. Si se trata de una instalación en red este será el directorio de la instalación en el servidor, si es una instalación monousuario este será el directorio de instalación de la aplicación en el disco local. Si se suministran los argumentos archivo y extensión, retornará estos dos argumentos concatenados al nombre del directorio en la forma directorio\archivo.extensión.

red (num, dec) - retorna un número igual a num redondeado al número de decimales expresados en dec.

rtfmodo([modo]) - si no se suministra modo retorna el modo RTF actualmente establecido, en caso contrario establecerá el modo actual. Los posible valores son: 0 USA_Word/Wordpad, 1 USA_Ventana_Sigrid, 2 USA_Ventana_Sigrid_SinEDICION

rtf2tex (rtf) - traduce el texto que recibe en formato rtf (rich text format) a texto plano.

salir () - finaliza la ejecución del programa.

screjecuta (archivo.xjs[, param]) - ejecuta el programa XJS que recibe como primer argumento, retorna el número de página con el que ha finalizado la ejecución del programa más uno. Este método es útil para poder imprimir varios informes numerando las páginas consecutivamente. Se utilizará la variable estado_salida para que cuando desde un programa se ejecute otro poder determinar si se ha producido algún error en el programa llamado.

Por ejemplo:

   screjecuta ("Pro\\XmlExpConta.xjs", "var lanzado=true;var massql="+massql)

   if (estado_salida) error ("Se ha producido un error en XmlExpConta")

El programa XmlExpConta manejará las variables lanzado y massql tal como si estuvieran declaradas e inicializadas en él, y establecerá estado_salida distinto de 0 en caso de producirse un error.

temporal([archivo][, extensión]) - retorna el nombre del directorio o carpeta utilizado para almacenar los archivos temporales. Por defecto es un directorio llamado Temporal que se encuentra en el directorio privado de instalación (es decir el directorio de la instalación cliente o el de la instalación monousuario). Si se suministran los argumentos archivo y extensión, retornará estos dos argumentos concatenados al nombre del directorio en la forma ...\Temporal\archivo.extensión. Por ejemplo: temporal ("salida.txt") retorna ...\Temporal\salida.txt, equivale a temporal ("salida", "txt")

trabajo([archivo][, extensión]) - retorna el nombre del directorio o carpeta de trabajo. Por defecto este es el directorio privado, es decir, el de la instalación cliente o monousuario. Si se suministran los argumentos archivo y extensión, retornará estos dos argumentos concatenados al nombre del directorio en la forma directorio\archivo.extensión.

venlinactuales() - retorna un array con los ides de las líneas de detalle seleccionadas en la ventana de propiedades de los documentos de gestión (pedidos, albaranes, ...).

Ejemplo: diaavisa (""+panselactual()+" > "+venlinactuales ());

windatos(archivo) - abre el archivo utilizando el programa, que según su extensión, tenga asociado en el registro de Windows. Las asociaciones de extensiones de archivos con los programas pueden modificarse o consultarse en las Opciones del Explorador de Windows.

winejecuta(programa, archivo) - abre el archivo que recibe como argumento con el programa especificado. Tanto el nombre del programa ejecutable como el del archivo han de especificarse por el nombre completo. Por ejemplo: winejecuta ("c:\\WINDOWS\\notepad.exe", "c:\\Temp\\Doc1.txt");

write(texto) - graba el texto que recibe en el archivo presenta.txt en el directorio temporal. Si ya se ejecutó otra sentencia write el texto se añadirá al final. Cuando finaliza la ejecución del script, se abre el archivo presenta.txt utilizando el Bloc de Notas de Windows. Esta instrucción junto con writeline permiten mostrar información en pantalla sin tener que utilizar el objeto impresor.

writeline(texto) - igual a write solo que graba un retorno de carro y nueva línea al final del texto que recibe como argumento.

Propiedades

erro - es una cadena de caracteres que almacena el último mensaje de error que se ha producido en la ejecución el programa xjs.

hoy - almacena un número que representa la fecha de trabajo que se muestra en la ventana principal (por defecto la fecha del sistema), en formato aaaammdd. Esta propiedad puede utilizarse como argumento de los métodos de manejo de fechas. Por ejemplo, si la fecha de trabajo es viernes 10 de agosto del 2001, el método fecha (hoy, "dd-mm-aaaa") retornará 10-08-2001.

programa - retorna el nombre del programa en ejecución. Por ejemplo diaavisa (programa+" "+version) -> abrirá el diálogo de aviso con el texto: Sigrid 2.2.0599 o similar.

version - retorna la versión del programa que se está ejecutando.

 

Objeto dibgrf

Métodos

grf.categorias (cat) - Es el método para establecer las categorías del gráfico, espera recibir una matriz o array de cadenas de texto que se mostrarán en el eje x en los gráficos de líneas y de barras. Por ejemplo:

   grf.categorias(["Enero", "Febrero", "Marzo"])

En los gráficos de tarta las categorías serán los rótulos para la leyenda del gráfico.

grf.leyenda (mostrar, tamaño) - El primer argumento establece la propiedad leyenda, será 0 (false) para que no se muestre la leyenda, 1 (true) en caso contrario, el argumento tamaño especifica el tamaño de la letra a utilizar en la leyenda, consiste en un número entero que referencia los tipos de letra establecidos en el archivo de configuración de la impresora, 0 para el tipo de letra Letra0, 1 para Letra1, etc.

grf.libera () - Inicializa el objeto gráfico estadístico estableciendo todas sus propiedades: categorías, serie, color, leyenda... a sus valores de defecto, de forma que se puede utilizar otra vez el mismo objeto en memoria asignándole nuevos valores.

grf.rotval (mostrar, tamaño) - Establece la propiedad rotval, cuando el argumento mostrar es 0 (false) no se mostrarán los rótulos de valores de las series en el gráfico, mientras que si es 1 (true) si se visualizarán. El argumento tamaño es un número entero para establecer el tamaño de la letra de los rótulos de valores, con un valor de 0 a 4 que hacen referencia a los tipos de letra definidos en el archivo de configuración de impresora que esté utilizando el objeto impresor.

grf.serie (rotulo, valores) - Es el método para definir las series del gráfico, cada vez que es invocado se añadirá una nueva serie al gráfico. El primer argumento es la etiqueta para la serie que se mostrará en la leyenda del gráfico, el segundo argumento es un array de valores para cada categoría del gráfico. Por ejemplo:

   grf.serie ("Ventas", [65897.34, 57894.00, 234897.67])

Propiedades

acero - permite poner el origen de los gráficos de barra con referencia al valor cero, de forma que si hay valores negativos salgan por encima y debajo del cero. (Sólo se aplica a tipo=2).

color - Será 1 (true) cuando se quiere que el gráfico se muestre utilizando distintos colores para cada serie de valores, y 0 (false) para mostrar las distintas series utilizando una escala de grises.

colorfondo - Determina el color de fondo del gráfico, que por defecto es "FFFFFF" es decir, blanco. Este color afectará únicamente a la zona en la que se dibuja el gráfico, mientras que el color de fondo para la leyenda, título y resto de los elementos se establece mediante el modificador m# del campo en el que se muestra el gráfico. Por ejemplo impresor.campo (dibgrf, "m#8080FF") dibujará el gráfico en un campo de color azul claro, independientemente del color de fondo del gráfico.

espacio - Es el espacio libre alrededor del gráfico, si esta propiedad es cero ocurrirá que los rótulos de la leyenda, el título del gráfico, los nombres de las categorías y los rótulos de valores del eje, quedarán pegados a los ejes del gráfico.

guiashor, guiasver - Determinan si se mostrarán guías o líneas de guiones horizontales y verticales respectivamente para facilitar la lectura del gráfico.

leyenda - Propiedad que define si se muestra (1) la leyenda, o no (0). Además de poder establecer el valor de esta propiedad directamente, también existe como método leyenda.

rotuloG - Cadena de texto que determina el título del gráfico.

rotuloX, rotuloY - Determinan los rótulos que se muestran en los ejes x e y respectivamente (en gráficos de líneas y de barras).

rotval - Establece si aparecerán los valores de la serie en el gráfico. Puede utilizarse el método de igual nombre para establecer esta propiedad y la letra a utilizar en dichos rótulos.

tipo - Determina el tipo de gráfico a mostrar: 1 para gráficos de líneas, 2 de barras y 3 de tarta.

 

Objeto dialogo

Métodos

dia.activa (ide, activar) – Activa o desactiva un control del diálogo. El primer argumento es el identificador del control (campo, opción, lista,…), el segundo será true para activar el campo y false para desactivarlo. Cuando un control está desactivado no podrá editarse para cambiar su valor, y se mostrará con el color de fondo establecido para textos desactivados en Opciones del programa/Letras y Colores, mientras que cuando el control está activado, se puede editar y se muestra con el color de fondo para texto editables.

Este método se utilizará normalmente en la función de manejo de eventos del diálogo, activando o desactivando los controles según el valor que se establezca en otros controles.

dia.ayuda (link) - Establece para el diálogo un enlace con un tema de ayuda de los existentes en el archivo de ayuda de la aplicación. Este método añadirá en la barra de botones del diálogo el botón Ayuda, que al ser pulsado por el usuario abrirá el archivo de ayuda (si no lo está) y se posicionará en el vínculo que recibe como argumento. Por ejemplo: dia.ayuda ("Sigrid/refbas.htm#dialogo")

dia.boton (id, texto, clase, [extensiones|ico] [,mod]) - Dibuja un botón en el diálogo, el primer argumento es un número entero identificador del control en el diálogo. El segundo es la etiqueta que se mostrará en el botón, puede ser una cadena vacía (""). A continuación se indicará la clase de botón.

Clases soportadas son:

    'A': Abrir archivo

    'G': Guardar archivo

    'D': seleccionar carpeta/directorio

    'S': Salir,

Las clases A, G y D abren el diálogo de archivos de Windows para seleccionar una ruta y, si procede, un nombre de archivo. Estas tres clases irán seguidas del identificador correspondiente al control en el que se almacenará el nombre de carpeta o archivo seleccionado en el diálogo.

   Ejemplo: dia.boton (150, "Examinar", "G100", "Archivos de texto (*.txt)|*.txt|", "l0")

Un botón de clase S, al ser pulsado devuelve el control al programa xjs, siendo el valor de retorno su número de identificador (id).

   Ejemplo :

 while (continua) {

                   continua=false

                   dia.boton (150, "Anterior", "S")

                   ....

                   r=dia.crea("Diálogo")

                   if (r==150)   continua=true  // indica que el usuario pulsó el botón Anterior

               }

El cuarto argumento, opcional, se utilizará en los botones de clase A, G y D para indicar las extensiones o tipos de archivos a examinar en el diálogo. En los botones de clase S sirve para asociar un icono al botón.

   Ejemplo dia.boton (150, "Examinar", "G100", "Archivos de texto (*.txt)|*.txt|")

   Ejemplo dia.boton (150, "Anterior", "S", "¡00BAR2")

Los iconos que se pueden utilizar se encuentra en el archivo Tebas.dll, que se distribuye con la aplicación. Este archivo contiene varias colecciones de iconos: BAR1, BAR2, BAR3, ICONOS16, ARCHIVOS, etc. Que pueden también mostrarse en informes mediante la función imp.grafico. El detalle de estas colecciones de iconos y como se referencian puede consultarse en el archivo iconos.xjs de la carpeta Informes/Ejemplos.

El quinto argumento, opcional, se utiliza para indicar un modificador de formato para la etiqueta del botón, puede especificarse: ln para que la etiqueta se muestre en negrita, l0 para que utilice el tipo de letra 0 de las definidas en las opciones del programa (ver en dia.texto otros modificadores de formato).

dia.campo (id[, texto][, ancho]) - Añade un campo de edición al diálogo, el primer argumento es un número que identifica al campo, y se utilizará para recuperar los datos introducidos en el campo con el método valor. El segundo argumento, opcional, es una cadena de texto que se utilizará como etiqueta descriptiva del campo, esta etiqueta se dibujará en pantalla a la derecha del campo. El último argumento, también opcional, es un número entero para indicar el ancho relativo del campo.

El ancho relativo del campo hay que especificarlo teniendo en cuenta que el método campo siempre asigna un 10 al ancho de la etiqueta. Si se especifica 10 para el tercer parámetro, el ancho del campo de edición corresponderá a la mitad del ancho de la ventana del formulario, asignando la otra mitad a la etiqueta. Si el argumento es 5 el ancho se repartirá como sigue 10 para la etiqueta + 5 para el campo de edición = 15, asignando 1/3 (5/15) del ancho de la ventana al campo de edición y 2/3 (10/15) a la etiqueta.

dia.campoM (id[, texto][, ancho][, alto])- Crea un campo de edición de texto multilínea, con una barra de desplazamiento vertical. Recibe: obligatoriamente un identificador, opcionalmente una cadena de texto para la etiqueta del control, y opcionalmente también un número que determina el ancho del campo (por defecto es 10), por último, y opcionalmente, recibe el número de líneas o altura del control (por defecto son 4).

dia.crea (tit, [id[,guarda]], [NoModal]) - Muestra el formulario en pantalla. Recibe como primer parámetro una cadena de texto que se mostrará en el título de la ventana, el segundo es igualmente una cadena de texto que se utilizará para identificar la ventana en el caso de que el parámetro guarda sea distinto de cero.

El parámetro guarda determina por una parte si los valores de los controles se almacenarán para poder ser mostrados la siguiente vez que se abra el diálogo, y por otra si el diálogo se abrirá en modo edición para todos los usuarios, pudiendo modificar los datos de los controles, o únicamente podrán modificarlos usuarios conectados en modo administrador. Admite los siguientes valores:

Un 0 (cero) o indefinido indica que al abrir el formulario  los campos de edición aparecerán a blanco y el grupo de opciones tomará el valor cero (la primera opción será la seleccionada). El diálogo se abrirá en modo edición para todos los usuarios.

Un 1 establece que  se almacenarán en el archivo de inicio (.ini) del usuario los últimos valores especificados en los controles, de forma que la siguiente vez que se abre el dialogo, aparecerá con los mismos datos (siempre que no se sobrescriban invocando el método valor). Todos los usuarios podrán modificar los datos.

Un 2 indica que los datos de los controles se almacenan en el .ini del usuario abriendo el diálogo con estos valores. Y los controles del formulario estarán desactivados excepto para usuarios en modo administrador.

La primera vez que se abre el diálogo mostrará en su parte inferior el texto <Inicialización del diálogo> pudiendo establecer los valores para cada control, pero el resto, si no se ha establecido el modo administrados, todos los controles estarán desactivados, no siendo posible modificar los datos, se muestra en este caso en el diálogo el mensaje 'No se pueden modificar los datos del diálogo. Debe estar en modo administrador'.

Un 5 indica que los datos del diálogo se almacenan en la base de datos, en la tabla cab, para cada empresa, por tanto serán  comunes a todos los usuarios cuando trabajan con una empresa determinada. Los datos del diálogo pueden ser modificados por todos los usuarios.

Un 6 establece que los datos se almacenan en la base de datos siendo compartidos por todos los usuarios de una misma empresa. El diálogo se abre para editar únicamente para usuarios en modo administrados,  y en modo administrador aparece en el diálogo el botón Guarda configuración actual, pudiendo actualizar o no los datos de los controles almacenados para la empresa en la base de datos.

El valor de 10+N para este parámetro es especial para diálogos que se llaman desde la ventana de estadísticas.

Se especificará un 6 en los diálogos de contabilización, de forma que los parámetros de contabilización una vez establecidos por un administrador de la aplicación serán compartidos por el resto de los usuarios, y no podrán modificarlos.

En los diálogos que solicitan parámetros para los informes, se especificará normalmente 1, de forma que los distintos usuarios podrán utilizar los informes con distinta parametrización.

El parámetro NoModal, opcional, permite crear diálogos con ventana no modal, por defecto es 0, lo que implica ventana modal. Una ventana es modal cuando una vez abierta el enfoque no puede pasar a otra ventana de la aplicación.

En los informes que utilizan diálogos y tienen que calcular el número total de páginas del informe, se puede especificar en este último parámetro el valor -1 que indica que el diálogo se cerrará sólo, ya que en caso contrario el diálogo se abrirá dos veces, una al calcular el número de páginas (pagtotal) y otra en la ejecución normal del informe. Para saber si el informe se está ejecutando para el cálculo del número total de páginas puede utilizarse la variable pagpri.

Por ejemplo:

var ultpag=(pagtotal)

...

if (typeof(pagpri)!="undefined")     // -> Primera pasada para el cálculo de (pagtotal)

   if (d.crea(tit, informe, 1))  salir()

else                                 // -> Segunda pasada

   d.crea(tit, informe, 1, -1)

 

dia.diaauxselecciona (nomtab, mascara="*" , porresumen=0, sel_dados_baja=0, otras_condiciones="", multiseleccion=0)

Abre la lista de selección de una tabla auxiliar en una celda de una tabla del diálogo . Este método hay que llamarlo desde la función de eventos del diálogo cuando se modifica la celda (eve_msg=6). Retorna ide que corresponda al registro seleccionado en la tabla auxiliar.

nomtab:  nombre de la tabla auxiliar, p.e.: “auxpronat”, “auxemp”, “auxtarcli”, etc

mascara: es el filtro que se aplicará a la lista, * para listar todos los Conceptos del tipo, B* listará los que comienzan por B, será el dato introducido por el usuario en la celda, que lo recibe la función de manejo de eventos en el argumento eve_dat (fila|columna|dato).

porresumen: será 0 cuando la máscara corresponde al código del tipo de concepto y 1 cuando corresponde a la descipción.

sel_dados_baja: es 0 si no se permite seleccionar conceptos dados de baja, 1 en caso contrario.

otras_condiciones: filtros adicionales para la lista.

multiseleccion: selección múltiple en la lista, si es 1 retorna una cadena de texto con la lista de ides de la selección separados por comas.

 

dia.diaconselecciona (tipo  , mascara="*" , porresumen=0, sel_dados_baja=0, otras_condiciones="", multiseleccion=0)

Abre la lista de selección de un tipo de concepto en una celda de una tabla del diálogo. Este método hay que llamarlo desde la función de eventos del diálogo cuando se modifica la celda (eve_msg=6). Retorna ide del concepto seleccionado.

tipo: es el número del Tipo de Concepto, por ejemplo 4 para Clientes.

mascara: es el filtro que se aplicará a la lista, * para listar todos los Conceptos del tipo, B* listará los que comienzan por B, será el dato introducido por el usuario en la celda, que lo recibe la función de manejo de eventos en el argumento eve_dat (fila|columna|dato).

porresumen: será 0 cuando la máscara corresponde al código del tipo de concepto y 1 cuando corresponde a la descipción.

sel_dados_baja: es 0 si no se permite seleccionar conceptos dados de baja, 1 en caso contrario.

otras_condiciones: filtros adicionales para la lista.

multiseleccion: selección múltiple en la lista, si es 1 retorna una cadena de texto con la lista de ides de la selección separados por comas.

 

dia.diasqlselecciona (rotulo, sentencia SQL Select, bmp="", multiseleccion=0)

Abre una lista de selección con los registros leidos de la base de datos al ejecutar la sentencia SQL Select.

Rotulo: es una cadena de texto que se utilizará como título de la lista de selección y de la ventana en la que se abre.

Sentencia SQL Select: esta sentencia tiene que incluir la columna ide que será retornada al seleccionar una fila o filas de la tabla.

Bmp: icono que se volcará junto al rótulo.

multiseleccion: selección múltiple en la lista, si es 1 retorna una cadena de texto con la lista de ides de la selección separados por comas.

 

Por ejemplo:

var ide=dia.diasqlselecciona ("Usuarios", "SELECT ide AS O__O, 0 AS Tip, cod AS Código, res AS Descripcion FROM usu ORDER BY cod")

 

 

dia.grupo (["V"/"H" [,mod]] ) - Inicia/finaliza un grupo de controles, cuando no recibe ningún argumento finalizará el último grupo de controles iniciado. Cuando el primer argumento es V, se inicia un grupo de controles que se dispondrán verticalmente, si es H los controles se colocarán horizontalmente. Los modificadores aplicables son:

b: borde, seguido de un número, 0 sin borde, 1 línea, 2 en relieve, 3 bajo relieve, 4 cincelado.

m: margen, seguido de 0 sin margen, o 4 para establecer un margen de 4 pixels.

 

dia.grupo ("N"[,mod]) - Inicia un grupo de pestañas en el diálogo. Además de los modificadores relativos al margen y al borde pueden aplicarse los siguientes:

l: tipo de letra seguido de un número de de 0 a 5 para indicar el tipo de letra a utilizar de los tipos definidos en las opciones del programa.

t: tipo se pestañas: 0 para pestañas de tamaño proporcional al ancho del diálogo y que se extienden cuando el ancho del diálogo aumenta, 1 para pestañas cuyo ancho se adapta al tamaño de su etiqueta y no cambia al variar el ancho de la ventana

Cada pestaña se iniciará invocando de nuevo el método grupo, que tiene que tener como primer argumento una cadena vacía, y como segundo argumento una cadena con cuatro elementos separados por coma como sigue: "mc1,'Primera pestaña',-1 -1", en donde Primera pestaña se reemplazará por la etiqueta de la pestaña.

dia.lista (ide) - crea un control de texto con barra de desplazamiento vertical, el control se carga llamando sucesivamente a dia.valor (ide, texto), donde

  texto = [\t]campo

           \t -> siguiente campo en la lista

  campo = [\b][\1<bitmap>\1][\a<ancho del campo>]\a<texto del campo> | [\r<ancho del campo>\r]

           \b -> letra negrita

           \r -> rellena el campo con una línea horizontal

Por defecto el texto se alinea a la izquierda del campo, si se precede <ancho del campo> de un signo menos el texto queda alineado a la derecha.

Ejemplo:

var d=dialogo

d.lista (20)

d.valor (20, "\\bVENTAS")

d.valor (20, "")

d.valor (20, "\\b\\a-150\\aTitulo1\\t\\a-150\\aTítulo2\\t\\a-150\\aTítulo3")

d.valor (20, "\\r150\\r\\t\\r150\\r\\t\\r150\\r")

d.valor (20, "\\a-150\\a199.234,50\\t\\a-150\\a123,12\\t\\a-150\\a1.234,45")

d.valor (20, "\\a-150\\a1.234,50\\t\\a-150\\a123,12\\t\\a-150\\a1.234,45")

d.valor (20, "\\a-150\\a19.234,50\\t\\a-150\\a1,12\\t\\a-150\\a124,45")

d.crea ("prueba", 1)

 

dia.opcion (id, etiquetas[,"H"]) - Crea una casilla de verificación o un grupo de opciones representadas por botones de radio. Recibe tres argumentos: el primer argumento es un número identificador del control, el segundo es una cadena de texto.

Si la cadena de texto que recibe como segundo argumento no contiene el carácter punto y coma (;), creará una casilla de verificación utilizando esta cadena de texto como etiqueta para la casilla. El método valor aplicado a este control retornará cero o uno, según que la casilla de verificación esté activada o no.

Si la cadena de texto, etiquetas, contiene el carácter punto y coma (;), creará un grupo de opciones de botones de radio, tomando como etiqueta de cada botón el texto comprendido hasta el carácter punto y coma.

La primera de las opciones corresponde al valor cero, la segunda al uno, etc. Es decir, el método valor retornará 0, 1, 2, etc., según la opción seleccionada.

Por defecto los botones de radio se colocarán uno debajo del otro en el diálogo, el tercer parámetro opcional permite modificar esta disposición, si su valor es "H" los botones se dispondrán horizontalmente en el diálogo.

dia.opcionL (id, eti, opciones, [, ancho]) - Añade una caja combinada, el primer argumento es un número entero identificador del control, el segundo es una etiqueta que aparecerá a la derecha del control, el tercero es una cadena de texto conteniendo las opciones que aparecerán en la lista separadas por punto y coma (;), el cuarto argumento, opcional, es un entero para indicar el ancho relativo del control, tal como se indica en el método campo. Al aplicar el método valor sobre este control, retornará el texto de la opción seleccionada.

dia.seleccion (ide, seleccion) - Asocia a un campo de edición la posibilidad de desplegar una lista de selección al suministrar en el campo una máscara de búsqueda. El primer argumento es el identificador del control tal como se ha suministrado en el método campo, el segundo es una cadena de texto que indica la lista de selección que se quiere asociar, y puede ser:

1.TIPXXX.cod|res|series: un código de tipo de Concepto, seguido de un punto, y de la palabra cod, res, o series.

Por ejemplo: dia.seleccion (20, "TIPCLI.cod") -> asocia al campo de identificador 20 la lista de selección de clientes retornando el código del cliente que se seleccione en la lista.

2.auxXXX.cod|res: un nombre de tabla auxiliar, seguido de cod o res.

Por ejemplo: dia.seleccion(20, "auxmun.cod") -> asocia al campo de identificador 20 la lista de selección de clientes retornando el código del cliente que se seleccione en la lista.

3.SQL.select...: una sentencia SELECT precedida de 'SQL.'.

Por ejemplo: dia.seleccion(20, "SQL.select ide as o__o,0 as Tip, est as Estado, cod as Código, res as Descripcion from conest where tip=24 order by est")

-> asocia la lista de selección de los estados definidos para el tipo de concepto 24 (cobros).

4.FECHA: se utilizará en todos los campos en los que se van a introducir fechas, para que al abandonar el campo se compruebe si el dato introducido corresponde a una fecha válida y se formatee correctamente, además al suministrar * en el campo se abre el control calendario para poder seleccionar una fecha.

5.ARBPAR+<obride>: para seleccionar capítulos-partidas del árbol del presupuesto de una obra, siendo <obride> el ide de la obra.

Por ejemplo: dia.seleccion(20, "ARBPAR159029") -> asocia la lista de selección del árbol presupuestario de la obra de ide=159029.

6.TIPOS[n=0]: asocia una lista de selección de tipos de conceptos, si n es 0 incluirá todos los tipos de conceptos, si es 1 sólo los tipos de conceptos accesibles según los módulos de la instalación o licencia de uso, y 2 los tipos de conceptos para los que el usuario tiene permiso de acceso.

7.TIPOSF[n=0]: igual que TIPOS pero además muestra en la lista de selección la fecha de bloqueo establecida para el tipo de concepto.

[*]: Para que la lista de selección admita selección múltiple, retornando los elementos seleccionados separados por comas, la cadena de texto irá precedida de un asterisco.

Por ejemplo: dia.seleccion (ide, "*TIPCLI.cod"); dia.seleccion (ide, "*ARBPAR"+obride).

[ARB_]: Si se trata de que la lista de selección se muestre en forma de árbol, según la codificación de los registros.

Por ejemplo: dia.seleccion(100, "arb_auxfam.cod") -> asocia la lista de selección estructurada de familias de productos.

dia.tabcasilla (ide, fila, columna) lee el contenido de una celda en una tabla, siendo ide el identificador del control tabla utilizado al crearla con dia.tabla, fila y columna determinan la celda a modificar comenzando desde cero y dato el valor a establecer en la celda.

dia.tabcasilla (ide, fila, columna, dato) modifica el contenido de una celda en una tabla, siendo ide el identificador del control tabla utilizado al crearla con dia.tabla, fila y columna determinan la celda a modificar comenzando desde cero y dato el valor a establecer en la celda.

dia.tabide (ide) - retorna el valor del primer campo del Select (ide) de la línea seleccionada en el control tabla de identificador ide.

dia.tabla (ide, titulo, [clase=H1f1t1], [editable=0], [nuevas_lineas=0], [eliminar_lineas=0], [xdef=80], [ydef=20]) - incluye en el diálogo una tabla de datos (grid). Hay que tener en cuenta que los 100 identificadores posteriores al del control tabla (ide) quedan reservados para este mismo control.

Ejemplo:

var d=dialogo

d.tabla (100, "Lista de conceptos de prueba")

d.tabsql (100, "select ide as ide__O, tip as \"tipo__ic\", cod,res from con where tip=1")

if (d.crea ("Prueba")) salir

diaavisa ("linea_sel="+d.tablinea (100)+", ide_sel="+d.tabide (100))

 

dia.tablinea (ide) - retorna la línea seleccionada en el control tabla de identificador ide, comenzando por 0.

 

dia.tabsql (ide, sentencia_sql) - carga los registros que resultan de ejecutar la sentencia_sql que recibe en un control tabla creado  previamente en el diálogo con el identificador ide.

 

dia.tabvalores (ide, clausula_select, array_datos) - carga la tabla creada con el identificador ide con los datos del array array_datos.

 

dia.tabvalores (ide) - retorna el array actual de la tabla creada con el identificador ide.

Ejemplo:

var a=new Array(4);

for(i=0;i<4;i++) a[i]=new Array(5);

a[0][0]=1; a[0][1]=1; a[0][2]=20070101; a[0][3]="A"; a[0][4]=100.25;

a[1][0]=2; a[1][1]=2; a[1][2]=20060204; a[1][3]="B"; a[1][4]="prueba descripción";

a[2][0]=3; a[2][1]=3; a[2][2]=20060207; a[2][3]="C"; a[2][4]=400.12;

a[3][0]=4; a[3][1]=4; a[3][2]=20060504; a[3][3]="D"; a[3][4]=800;

var d=dialogo

d.tabla (100, "Lista", "H0f1t1", 1)

d.tabvalores (100, "select 0 as ide__On,0 as \"tipo__icn\", 0 as \"fecha__f24\", 'c' as \"cod__24\", 'd' as \"res__40\" from cab where ide<0", a)

d.crea ("Prueba", "pru")

a= d.tabvalores (100)

diaavisa ("linea_sel="+d.tablinea(100)+", ide_sel="+d.tabide(100)+"\nValores:"+a)

 

dia.texto ([texto][,mod][, ancho]) - Si no recibe ningún argumento incluirá una línea separadora horizontal en el diálogo. El primer argumento es una cadena de texto a incluir como etiqueta en el formulario . El segundo argumento, opcional, es una cadena de texto para modificar el formato aplicable a la etiqueta. Los posibles modificadores son:

bn: establece el borde para el texto, siendo n un número entero: 0 sin borde, 1 línea, 2 en relieve, 3 bajo relieve, 4 cincelado.

cn: color, 0 negro, de 1 a 5 serán los colores seleccionados para los tipos de letra en las opciones del programa, 1 color de la letra pequeña, 2 mediana, etc.

Puede indicarse un número de color en componente RGB.

Ej: Para poner un texto en Rojo: d.texto ("Prueba", "c16711680") ya que el color RGB "FF0000" en hexadecimal es el valor decimal 16711680 (utilizar calculadora para ello).

Ej: verde oscuro sería: "008000" = 32768 . rojo oscuro "000080" = 128, etc...

en: exacto, 0 no, 1 sí. En el segundo caso el ancho del campo corresponderá al ancho de la cadena de texto que contiene.

ln: indica el tipo de letra, siendo n un entero de 0 a 5 para indicar el tipo de letra a utilizar de los tipos definidos en las opciones del programa: 0 pequeña, 1 mediana, 2 grande, 3 enorme, 4 programa, 5 texto. Por ejemplo: dia.texto ("Etiqueta", "l2")

mn: margen de separación entre el texto y el borde, 0 sin margen, 4 margen de 4 pixels.

jn: justificación del texto, 0 izquierda, 1 centro, 2 derecha

El último argumento ancho opcional afecta al tamaño del texto de forma similar a como lo hace en el método dia.campo.

 

dia.valor (ide[, valor][, modo]) - Retorna o establece los valores de los controles del diálogo. Cuando recibe un único argumento retorna el valor almacenado en el control cuyo identificador recibe como argumento. Si el control es un campo de texto retornará la cadena contenida en el control, si es una casilla de verificación retornará 1 o 0 dependiendo de que la casilla esté activada o no, si se trata de un grupo de opciones retorna un número indicativo de la opción seleccionada comenzando por cero, si es una caja combinada retorna el texto de la opción seleccionada.

Si recibe un segundo argumento establecerá el control de identificador id  con el valor, permitiendo así asignar valores de defecto antes de invocar el método crea.

El parámetro modo indica si al abrir el formulario se establece el valor del control establecido la última vez (suponiendo que el tercer parámetro de dia.crea sea distinto de cero) o el indicado en valor.

Un 0 indica que al abrir el diálogo el control tomará el valor almacenado si existe, un 1 indica que el control toma el valor indicado en dia.valor aunque existe un valor almacenado para él, y un 2 indica que el control siempre aparece en blanco.

Por último este mismo método permite añadir barras de desplazamiento vertical en el grupo del diálogo, para que aparezca la barra, el segundo parámetro de dia.grupo comenzará por v1, el siguiente ejemplo abre un diálogo en el que se ha añadido una casilla de verificación por cada mes-año de actividad de la aplicación:

// lee el primer y último ejercicio contable

var bas=base()

var eje_ano1 = bas.cabeceral ("eje_ano1")

var eje_ultimo = bas.cabeceral ("eje_ultimo")

 

var idc=100

var dia=dialogo

dia.texto ("Seleccionar Mes-Año ", "l2j1")

dia.texto ()

dia.grupo ("V", "v1m4,,-1,-1")

      for (var a=eje_ultimo; a>=eje_ano1; a--) {

            if (a==eje_ultimo)

                    var m=fecmes(hoy)

            else  var m=12

            for (;m>=1;m--) {

                    dia.opcion (idc, fecha(fecha (1, m, a), "mmmm")+" "+a)

                    idc+=10

             }

             dia.texto ()

       }

dia.grupo

if (dia.crea ("MES-AÑO"))

       salir

 

Cuando se crea el diálogo  estableciendo que se guarden los controles al cerrar el diálogo, o sea cuando se llama a dia.crea indicando un identificador para el diálogo y pasando un valor distinto de cero como tercer parámetro. Por ejemplo: dia.crea (“Mi título”, “MiID”, 1)

Al cerrar el diálogo se añaden en el archivo de inicio del usuario de la aplicación, que se almacena en la carpeta Inis, por ejemplo Sigrid_usuario.ini, las entradas necesarias para que la siguiente vez que el usuario abra el diálogo, todos los controles mantengan los valores que tenían la última vez que el usuario utilizó este mismo diálogo.

En estas circunstancias podemos conocer los valores que tomarán los controles del diálogo aunque aún no esté abierto. Para ello utilizaremos la función:

dialogo_valor (Id_dialogo, Id_control), donde

Id_dialogo: es el identificador del diálogo, es el segundo parámetro que se suministra en la llamada a dia.crea, este identificador establece la propiedad cod del objeto diálogo, que nos servirá, desde la función de manejo de eventos del diálogo, para identificar que diálogo ha disparado un evento.

Id_control: es el identificador del control del cual queremos conocer su valor.

Ejemplo: el siguiente ejemplo crea un diálogo que tiene una casilla de verificación y un campo; al abrir el diálogo, si la casilla de verificación está establecida, se activará el campo, en caso contrario se desactivará.

 

var dia = dialogo

dia.opcion(100, "Enviar por e-mail")

dia.campo(200, "Para")

 

var enviar = dialogo_valor("Mi_Dialogo", 100)

if (enviar == 1)

    dia.activa(200, true)

else

    dia.activa(200, false)

 

if (dia.crea("Ejemplo", "Mi_Dialogo", 1))

    salir

 

dia.visible (ide, visible) – Muestra u oculta un control en el diálogo. El primer argumento es el identificador del control (campo, opción, lista,…), el segundo será true para hacer que el control esté visible y false para ocultarlo. Este método se utilizará normalmente en la función de manejo de eventos del diálogo, mostrando u ocultando los controles según el valor que se establezca en otros controles.