JavaScript: extensión COM para programar informes |
Inicio Anterior Siguiente |
Métodos, propiedades y objetos para imprimir La parte correspondiente a interface y funciones para manejar fechas y campos de impresión, las tiene en objetos básicos para imprimir. Como nomenclatura para métodos, objetos, funciones, modificadores, etc. utilizaremos el siguiente convenio de notación: rgb - Los colores se representan en formato RGB (es decir, con componentes red,green,blue) con la notación 12:3:100 inedo 3 valores de 0 a 255. Cuando se pone un único valor, se suponen los 3 iguales y consiste en una gama de grises. Dentro de los objetos y métodos básicos del objeto ingra, encontramos el objeto impresor, cuya definición tiene el formato: Cimp ([archivo_cni [ ,columnas ,margen]]) - A partir de este objeto impresor, podremos trabajar a nivel de tabla. Dándole opcionalmente un valor al parámetro archivo_cni que hace referencia a la configuración de impresora que utilizaremos. También podremos indicar el número de columnas con las que presentaremos nuestro informe, como si fuesen múltiples páginas que solo hay que definir una vez, en una misma hoja, y el margen que las separará. Este objeto se sirve de los siguientes métodos y atributos: subtabla - es un objeto tiene las mismas propiedades y métodos que impresor, siendo a su vez el objeto subtabla uno de sus miembros. Permite definir subtablas dentro de las tablas para poder diseñar informes de cualquier nivel de complejidad en anidamiento. Para inicializar el objeto subtabla se utiliza la siguiente sintaxis: s = imp.subtabla ([modsc[, mods[, modc]]]) El primero de los argumentos especifica el ancho de las columnas de la subtabla y el número de estas, pueden también especificarse otros modificadores de formato que afectarán a las columnas de la subtabla. El segundo especifica los modificadores que afectarán a toda la subtabla. El tercero contiene modificadores para el campo de la tabla en el que se está definiendo la subtabla. Por ejemplo: var sub = imp.subtabla (". .", "b1", "m#38AD5F") { sub ("SC 1"); sub ("SC 2"); sub.linea(); } mostrará dentro de la tabla donde se defina la variable "sub", un campo que se divide en una subtabla de dos columnas iguales, con borde y un fondo de color verde. col - Almacena la columna (definida en el objeto impresor), dentro del informe en la que se mostró la última línea al invocar el método linea. Si el número de columnas del informe es superior a 1, la propiedad tendrá inicialmente el valor 1, y se incrementará de uno en uno al mostrar la primera línea de las sucesivas columnas del informe. pag - Almacena el número de página actual. Por ejemplo, para mostrar el número de página en el informe: imp ("Página: " + imp.pag); x1 - Almacena el valor en milímetros del margen izquierdo establecido en la ventana configuración de impresora x2 - Almacena la distancia en milímetros desde el borde izquierdo de la página al margen derecho establecido en configuración de impresora xx - Diferencia entre x2 y x1. y1 - Almacena la distancia en milímetros desde el borde superior de la página al comienzo de la línea que se imprime al llamar al método linea. y2 - Almacena la distancia en milímetros desde el borde superior de la página al margen inferior definido en configuración de impresora yy - Diferencia entre y2 e y1. campo ([dato[, modificadores]]) - Añade un campo a la lista de campos a imprimir en una linea. Este es el método por defecto del objeto impresor, por lo que no es necesario incluir la palabra campo para invocarlo. El argumento dato puede ser: una cadena de texto, o un número, o una expresión que pueda evaluarse a una cadena de texto o a un número, o un objeto subtabla. El argumento mod es una cadena de texto conteniendo modificadores de formato del campo, estos modificadores determinarán el aspecto que tendrá el campo. Si no recibe ningún argumento, añadirá un campo vacío. global (modificadores) - Establece modificadores de formato que se aplicarán a todos los campos del informe. La cadena modificadores contendrá una combinación de modificadores de formato. hor ([x1][, x2]{, x} [,modificadores]) - Muestra una línea horizontal desde el punto x1 al punto x2 expresados en milímetros desde el margen izquierdo de la página, a una distancia y en milímetros desde el margen superior de la página. si a la cadena se añaden más posiciones (x), la raya se traza entre todas ellas. Opcionalmente puede recibir una cadena de modificadores. Si no recibe ningún argumento muestra una línea horizontal ocupando el ancho de página disponible. Vea también el método ver. linea ([modificadores [,bloquea]]) - Muestra una línea los campos definidos previamente con el método campo. El argumento modificadores es una cadena de texto que contiene modificadores de formato aplicables a la línea (los puede ver más adelante). Si bloquea es distinto de cero, la línea irá unida a la siguiente, sin separarlas en el caso de producirse un salto de página. El bloqueo se rompe cuando invocamos una linea sin bloqueo, y entonces se imprimen todas las que quedaban pendientes bloqueadas. Si se ha invocado previamente el método tabla los campos se mostrarán en las columnas definidas para la tabla. En caso contrario teniendo en cuenta el tamaño del papel, los márgenes establecidos, y el número de columnas del informe, el método linea divide el ancho disponible de la línea en partes iguales, asignando este espacio a cada campo de la lista, y colocando en este espacio el dato o valor de cada campo. pagina () - Equivale a un salto de página, deja el resto de la página en blanco y salta a la siguiente. tabla ([modif_columna][, modif_tabla]) - Determinar el número total de columnas que se quiere mostrar cada vez que se llame al método linea, y el aspecto que tendrá cada una de ellas. El argumento modif_columna es una cadena de texto que contiene los modificadores para las columnas de la tabla, los modificadores de cada columna se separan con un espacio. Si el modificador de columna es un punto, tomará como tamaño todo el restante. El argumento modif_tabla es una cadena que especifica los modificadores aplicables a todas las columnas de la tabla o modificadores de tabla. Si no se especifican argumentos el resultado será la eliminación de la anterior definición de tabla. ver ([y1][, y2]{, y} [,modificadores]) - Exactamente igual que hor, pero para líneas verticales. Antes que nada, puede ver e imprimir un ejemplo de todos estos modificadores con el informe ejemod.xjs que le puede ser de mucha utilidad para comprender estas descripciones de funcionamiento. Los métodos del objeto impresor reciben como último argumento una cadena de texto, que contiene códigos que se interpretan como modificadores de la forma en que se muestran los datos. Estos códigos se conocen como modificadores de formato. Cuando se definen modificadores a distintos niveles (invocando los distintos métodos del objeto impresor) que afectan al formato de un mismo atributo de un campo, se impone el siguiente criterio de precedencia de mayor a menor: (+ importante) campo -> línea -> columna -> tabla -> global (- importante) an - Alineación vertical y horizontal del dato dentro del campo: ahn - Alineación horizontal: ah0- Izquierda; ah1- Centro; ah2- Derecha. ar - Alineación al resto de altura. Si una fila de subtabla tiene este modificador y está dentro de una tabla que tiene mayor tamaño en altura, la fila se ajustará a la altura de la celda que la contiene. avn - Alineación vertical: av0- Superior; av1- Centro; av2- Inferior. bn - Borde del campo: b0- sin borde; b1- borde continuo; b2- borde de puntos; b3- borde de rayas. bgn - Grosor del borde en milímetros. bi, bd, bs, bn - Borde izquierdo, borde derecho, borde superior, borde inferior. bh - Borde horizontal. Equivalente a bs bn. bv - Borde vertical. Equivalente a bi bd. b#rgb - Color del borde. cn - Modificador de combinación de campos. Por ejemplo imp ("Cliente especial por su volumen de facturación", "c3"), unirá el campo actual con los dos siguientes dando formato al dato en el espacio correspondiente a los tres campos. d - Falta en - Margen externo del campo en milímetros. ein, edn, esn, enn - Margen externo en milímetros: izquierdo, derecho, superior, inferior. ehn - Margen externo horizontal en milímetros. Equivalente a "ms mn". evn - Margen externo vertical en milímetros. Equivalente a "mi md". e#rgb - Color de relleno del margen externo. ln - Especifica un tipo de letra de los definidos en la ventana Configuración de Impresora, n será un número del 0 al 4 referenciando los cinco tipos de letra definidos. ln - Letra Negrita. lc - Letra Cursiva. ls - Letra Subrayada. lt - Letra Tachada. lf - Letra de paso fijo, cada carácter ocupa el mismo espacio horizontal, por ejemplo la letra Courier. (1) es el valor por defecto para estos últimos: activa el modificador. También se puede desactivar (0), si está activado por otro ámbito de menos importancia lo - Letra opaca: si se define para el interior del campo algún color y no se especifica lo, las letras aparecerán sobre dicho color de fondo sin sobreescribirlo, de forma que entre una letra y otra aparecerá el color del interior del campo. Sin embargo, el modificador hace que la letra sobreescriba sobre el color del fondo. lan - Angulo de giro del texto. Por ejemplo la45, texto girado 45º. lhn - Tamaño horizontal de la letra en milímetros. lvn - Tamaño vertical de la letra en puntos. l#rgb - Color del texto. Por ejemplo l#CE40A7 para que la letra sea fucsia. lrcar - Rellena el espacio libre del campo con el carácter ASCII car. Por ejemplo: imp ("campo 1", "lr."), mostrará en el campo correspondiente: "campo 1..........", rellenando con puntos (.) el espacio disponible a la derecha. ljn - Texto justificado: lj0- no justifica; lj1- justificado; lj2- justificado incluso en la última línea. lgn - Guionado del texto: lg0- no guionado; lg1- guionado normal; lg2- si el texto no cabe en el espacio horizontal del campo, lo recorta mostrando tres puntos (...). mn - Margen interno del campo en milímetros. min, mdn, msn, mnn - Margen interno en milímetros: izquierdo, derecho, superior, inferior. mhn - Margen interno horizontal en milímetros. Equivalente a "ms mn". mvn - Margen interno vertical en milímetros. Equivalente a "mi md". m#rgb - Color de relleno del margen interno. rin, rdn, rsn, rnn - Estilo de la raya de borde de párrafo: (0) no, (1) sólida, (2) puntos, (3) rayas rhn - Raya horizontal en milímetros. Equivalente a "rs rn". rvn - Raya vertical en milímetros. Equivalente a "ri rd". rgn - Grueso de la raya en milímetros m#rgb - Color de raya de borde. r[:<columnas_izq>][:columnas_der>] - Sin ningún valor, significa, que con los valores por defecto, imprime los 4 bordes, con el estilo 1. Opcionalmente se pueden especificar el número de campos por la izquierda (campos_izq) y/o por la derecha (campos_der) de la línea, que se desea que NO se recuadren. rp - Falta vn - Determinan el tamaño vertical en mm. Por ejemplo, imp.linea ("v20") mostrará los campos de la línea con una altura de 20 mm. Recuerde que la anchura de campos no se puede forzar y viene dada por el ancho de campos definidos en tablas. Por ejemplo, imp.tabla ("75 40 30") define una tabla de tres columnas de 75, 40 y 30 mm de ancho. xn, yn - Modificadores de posición que determinan una posición absoluta en mm, independiente del margen establecido. Por ejemplo imp.linea ("x50 y75"), mostrará los datos en el punto que se encuentra a 50 mm hacia la derecha desde el borde izquierdo de la página y 75 mm hacia abajo desde el borde superior, independientemente del margen establecido en la configuración de la página y de la posición actual en la que se esté imprimiendo en esa página. |