El diseñador Fast Reports
El diseñador Fast Reports para Hermandad Todas las versiones de Hermandad han incluido un generador de informes. Es uno de los puntos fuertes de este programa, porque produce ilimitados informes o listados al usuario, sin tener que depender de desarrollos añadidos. Los generadores anteriores utilizaban un núcleo de Windows o de QuickReports, pero a veces producían errores imprevistos por incluir bugs no depurados por sus creadores. Con el salto al núcleo de Fast Report, damos un paso muy importante en la generación de informes, porque no solo incluimos una herramienta altamente depurada, sino que además proporciona una facilidad de uso y potencia inigualables. El tipo incorporado se denomina genéricamente Free Reports porque se suministra con código fuente de manera gratuita, por su creador A.Tzyganenko. Hemos usado dichos fuentes para rescribirlos y adecuarlos a las necesidades del programa Hermandad, consiguiendo una integración total que beneficiará a las Cofradías y Hermandades que lo utilicen.
En este manual se asume que está usted familiarizado con diseñadores de informes por lo que conoce los conceptos básicos, como son las bandas, las fuentes de datos, los campos de datos, etc.
Contenido 1. 2. 3. 4. 5. 6.
El entorno del diseñador ..............................................................................................................5 Los objetos de FastReport............................................................................................................7 Insertando variables ...................................................................................................................13 Las barras de herramientas.........................................................................................................15 Utilizando funciones ..................................................................................................................18 Propiedades y métodos de los objetos .......................................................................................19
El diseñador Página 5 de 21
1. El entorno del diseñador Contiene paneles encajables o barras de herramientas, que pueden ser movidas a voluntad ser colocados a su necesidad. La posición y visibilidad de los paneles queda grabada en el registro, por lo que cada vez que se abre el diseñador, nos lo encontramos configurado de la última forma que lo utilizamos.
Barras de herramientas Menú Barra de alineación
Bandas
Barra de objetos
objetos
Inspector de objetos
paginado Posición y tamaño del objeto actual
Nombre del objeto actual
Usando el teclado • • • • • • • • • • • • • • • • • • •
Teclas de flecha: mueve un selector de objeto en objeto. Ctrl + Flechas: mueve un objeto seleccionado en la dirección de la flecha pulsada. Mayúsculas + flechas: incrementa o disminuye el alto y ancho de un objeto. Enter y Ctrl + Enter: abre el editor de texto del objeto seleccionado. Del: borra el objeto seleccionado. Ctrl + 1..9: altera la propiedad “FrameWidth” del objeto seleccionado. Ctrl + Z : deshacer ultima acción. Ctrl + Y: rehace la acción cancelada. Ctrl + G: activa / desactiva la rejilla de fondo. Ctrl + B, Ctrl + I, Ctrl + U – Cambia atributos de letra: negrita, itálica, subrayado Ctrl + F: enmarca el objeto seleccionado. Ctrl + X: corta al portapapeles. Ctrl + V: pega desde el portapapeles. Ctrl + C copia al portapapeles. Ctrl + A: selecciona todos los objetos de la página Ctrl + N: crea un nuevo informe vacío. Ctrl + O: abre un informe desde un fichero externo. Ctrl + S: salva el informe en un fichero externo. Ctrl + P: vista previa.
El diseñador Página 6 de 21
Usando el ratón • • • • •
Con botón izquierdo seleccionamos los objetos de pantalla; en la paleta de componentes visuales (barra de objetos), seleccionamos el objeto a insertar. Con botón derecho accedemos al menú contexto con funciones propias del objeto que apuntamos en ese momento. Con doble click, abrimos el editor del objeto seleccionado. Si se hace sobre la zona blanca del fondo (papel) aparece el cuadro de “opciones de página”, donde se configuran márgenes, orientación, etc. Mayúsculas + clic en botón izquierdo: selección múltiple. Arrastrar y soltar: traza un rectángulo de selección. Los objetos que se toquen las líneas del rectángulo se seleccionan a la vez, al soltar el botón.
Opciones del Informe Se abre desde el menú “archivo / opciones del informe”, y presenta la lista de impresoras disponibles en su sistema. Puede seleccionar una “impresora virtual”, que acepta cualquier dimensión de papel, pero que solo sirve para pruebas en modo diseño. No se puede usar para imprimir. Es útil porque permite realizar informes para impresoras que aún no están instaladas en el sistema. De esta forma se puede usar un papel A3 aunque su impresora real no lo permita. Si se marca “escoger en ejecución”, la impresora se adjudica tras cargar el informe, y será la predeterminada en su sistema Windows. La “doble pasada” sirve para cuando utilizamos un objeto función de tipo “total páginas”. En tal caso, esta variable requiere que todo el informe sea ejecutado una vez, para calcular el número total de página. En la segunda pasada ya tiene ese valor para poder emitir campos del tipo “Página xx de yy”. Si usas este campo y no marca la doble pasada el “total de páginas” no mostrará un valor correcto. Tras seleccionar una impresora, el diseñador adecua el fondo a la zona imprimible de la impresora elegida.
Opciones de Página Para indicar el tamaño de papel en uso, la orientación, los márgenes y otras opciones interesantes. La marca de “altura ilimitada” está indicado para papel personalizado de pequeño tamaño. Su acción consiste en ampliar el fondo, para lanzar el salto de página más tarde, y de esa forma en impresoras de inyección se puede imprimir en su totalidad antes de expulsar cada hoja. La opción “fijar al área imprimible” (pestaña márgenes) hace que desaparezcan los márgenes y se ajuste el informe a la máxima área imprimible. En la pestaña “opciones” podemos establecer columnas en el informe y el espacio entre ellas. LA opción “imprimir en página anterior” hace salir una hoja en blanco antes del informe.
Opciones del diseñador Se localiza en el menú “herramientas / opciones” y le permite configurar el diseñador a su gusto.
subinformes
2. Los objetos de FastReport
apuntador
bandas
campos
dibujos
líneas
El diseñador Página 7 de 21 Casilla de marca
Rectángulo
imágenes
Icono
Nombre Cuadro de Texto
Descripción ofrece un rectángulo con borde que puede albergar texto en múltiples líneas. El texto puede contener variables.
Banda
Creador de bandas, lugar donde se ubicarán los campos del informe
imagen
Acepta los formatos BMP, ICO, WMF, EMF y JPG. Crea un subinforme. Cuando inserte este objeto en el informe, se crea una nueva página de informe Trazo de líneas horizontales y verticales Crea un rectángulo con sombra que aceptará múltiples líneas de dato. Útil para crear títulos Muestra datos en código de barra (en desarrollo, aún no disponible)
subinforme Línea Cuadro sombreado Código de barras Gráfico
Inserta dibujos geométricos (rectángulo, elipse, triángulo).
Campo de marca
Muestra daos lógicos en forma de campo de chequeo ó X.
OLE
Inserta un objeto OLE. (en desarrollo, aún no disponible)
El objeto "Cuadro de Texto" Se trata del más poderoso y flexible de los objetos de Fast Reports. Básicamente, provee un rectángulo rellenable con texto multi línea. Además se le puede definir el tipo de contorno, color y tamaño; definir el tipo de letra, la alineación y rotación del texto (horizontal o vertical). Para ajustar sus atributos puede usar 2 barras de herramientas: la de texto y la de marco:
El contenido del cuadro de texto consiste en campo “memo” (ilimitado de texto), pero que puede incluir: texto, variables, campos de datos, o una combinación de estos. El formato de la letra se aplicará a todo el texto contenido dentro de él. Algunos ejemplos de uso: Longitud en см: [Longitud] - Esto muestra un trozo de texto fijo (Longitud en см:) seguido por el valor de una variable ([Longitud]) Longitud en см: [[Longitud] * 2.54] -Esto muestra parte de texto fijo (Longitud en см:) seguido por el resultado de una formula usada contra una variable, ( [[variable] * valor]). Es importante escribir correctamente los corchetes adicionales cuando usamos fórmulas con variables.
El diseñador Página 8 de 21
La vía más rápida para editar un cuadro de texto es: seleccionarlo y presionar doble-clic. Se abre la siguiente ventana que nos permite la edición:
Su barra de herramientas nos ofrece las siguientes funciones: Inserta una expresión o campo variable; Inserta un campo de datos. En H6 solo aparece en modo analista para asegurar el buen funcionamiento del programa e impedir la manipulación incorrecta de los informes.; Operaciones del portapapeles Activa / desactiva el ajuste de línea Activa / desactiva el editor de código; Cancelar; Aceptar.
Desde el editor puede introducir texto, insertar variables, campos de datos y expresiones. Pulse en los botones "insertar campo DB" o "insertar Expresión" que le muestran los campos disponibles en cada momento.
Cada cuadro de texto tendrá su propio estilo. Accediendo al “inspector de objetos” (presione F11) haga click en la propiedad “DisplayFormat”: Verá todas las opciones de formato de máscaras muy necesarias para campos numéricos, de fecha, de hora y lógicos
Por cada categoría de formato, puede elegir por los formatos que se ofrecen, o personalizarlos, (por ejemplo, #,##0.000 para un valor numérico). Para valores lógicos use “No;Si” ; y en los formatos de fecha con mes en letra, depende totalmente del idioma de su máquina.
Si una variable no puede ser formateada presentará su valor en texto plano. Si un cuadro de texto contiene una combinación de campos y desea formatear cada uno de una forma distinta, se permite sobrescribir el formato por defecto, añadiendo el carácter «#» seguido del estilo de la máscara; de la siguiente forma:
El diseñador Página 9 de 21
[Variable #formato], donde “formato” es uno de los siguientes: •
• •
x.x ó Nx.x ó Nyyyyy – formatos numéricos; -siendo en “x.x” – la longitud del número/número de dígitos en parte decimal; -en yyyyy – una cadena del tipo #,##0.00 -si en “x.x” ó “yyyyy” se incluye un punto, coma o guión, («.», «,», «-»), tal carácter será usado como separador de la parte decimal. Dxxxxx, Txxxxx - fecha y hora. Siendo “xxxxx” – una cadena de tipo “dd.mm.yy”. Bxxxxx;yyyyy – Formatos lógicos. Si el valor es FALSO, la cadena”xxxxx” será la que aparezca, en caso contrario aparecerá la cadena “yyyyy”.
He aquí algunos ejemplos usando el carácter «#»: [Cuota anual #9.2] [Cuota anual #9-2] [Cuota anual #N#,##0.00] muestra Cuota anual en formato numérico [Fecha de alta #Ddd-mm-yyyy] muestra la fecha de alta en formato dia-mes-año [Fecha de alta #Ddd-mmm-yyyy] muestra la fecha de alta en formato dia-3 letras del mes-año [Junta gobierno #BNo;Si] Campo Lógico: muestra Si cuando el hermano pertenece a la Junta de Gobierno, y no en caso contrario [Junta gobierno #B;Si] Campo Lógico: muestra Si cuando el hermano pertenece a la Junta de Gobierno, y NADA en caso contrario Formato condicional Cuando quiera que ciertos datos presenten una forma característica, o que destaquen por un determinado valor, puede usar este tipo de ; el cual produce un formato al que se accede pulsando el botón cambio de letra, su color o su fondo, basándose en una condición especial. Pulse el botón y le aparecerá el cuadro de diálogo de la derecha. Lo usamos sobre la variable [deuda actual] de manera que cuando un hermano tiene un valor superior al 10, presentará el dato en Negrita, cursiva y color rojo. En otro caso aparecerá con el formato original
Otras propiedades del Cuadro de Texto Al pulsar botón derecho sobre un objeto cuadro de texto disponemos de más opciones: • Ajustado: Hace que el objeto presente una altura variable presentando la información en múltiples líneas. Para que funcione, es obligatorio activar la propiedad “ajustado” de su banda madre . • Corte automático de palabras: Actúa con el anterior; usando los espacios para separar las líneas. • Tamaño automático: antes de imprimir, el objeto calcula su ancho máximo. • Solo texto: En este caso no se procesa la variable del interior. Muestra lo que contenga literalmente. • Suprimir valores repetidos: No imprime nada si contiene el mismo valor de la línea anterior Además tenemos propiedades adicionales en el inspector de objetos: • CharSpacing – espacio extra entre caracteres. • GapX, GapY: píxeles de separación extra en las esquinas izquierda y arriba • LineSpacing – espacio extra entre líneas del texto. Para conocer a fondo el funcionamiento de estas propiedades, pruébelas una a una y vera como alteran el informe desde la vista previa inmediata.
El diseñador Página 10 de 21
El objeto "Banda" Al igual que en otros diseñadores de informes, Fast Reports se basa completamente en la inserción de múltiples bandas para presentar la información. NOTA: Las bandas no tienen que aparecer en un orden concreto, puesto que cada una hará su misión en donde procedan, no obstante conviene colocarlas de forma adecuada para facilitar la lectura posterior. Lista de bandas Nombre Título del informe Sumario del informe Cabecera de página Pie de página Cabecera maestra Datos maestros Pie maestro Cabecera de detalle Datos de detalle Pie de detalle Cabecera subdetalle Datos subdetalle Pie subdetalle Superpuesto Cabecera columna Pie de columna Cabecera de grupo Pie de grupo Informe cruzado: Cabecera / datos / pie Hija
donde y para que se usa Solo se imprime al principio del informe Solo se imprime al final del informe Se imprime al principio de cada página Se imprime al final de cada página Se imprime al principio de cada primer nivel de datos Datos en el 1er. Nivel – repetido por cada registro Al final de cada primer nivel de datos Se imprime al principio de cada segundo nivel de datos Datos en el 2º Nivel – repetido por cada registro Al final de cada segundo nivel de datos Se imprime al principio de cada tercer nivel de datos Datos en el 3er. Nivel – repetido por cada registro Al final de cada tercer nivel de datos Se imprime en cada página a modo de capa trasera (marca al agua) Se imprime al principio de una columna Se imprime al final de una columna Título de grupo impreso al principio del grupo Se imprime después de los datos de un grupo Estas bandas se usan en informe cruzado (cross-tab) con un número variable de columnas en la página. Puede ser añadida a otra banda de cualquier tipo excepto las cruzadas y pie de página. Se coloca siempre después de su banda padre.
Según la banda donde estemos, el diseñador mostrará el editor apropiado
Normalmente las bandas que muestran datos requieren conexión a una fuente de datos. No obstante, en la integración a Hermandad no será necesario, ya que es H6 quien lo hace de manera invisible al usuario cuando se ejecute el informe. Aún así, para usar la vista previa inmediata desde el diseñador se puede seleccionar como origen de datos el conjunto DATOS. Vea la pantalla del “origen de datos” que se abre presionando doble-clic sobre una banda que requiera datos. Si selecciona el “conjunto de datos virtual”, debe especificar un número de registros. Esto solo debe hacerlo para pruebas inmediatas, ya que lo que se muestra es el primer registro multiplicado tantas veces como número de registros haya indicado. Y por tanto, no se presenta información real de las tablas de H6. No deje activada tal opción porque después, el informe no le mostrará lo que desea. Se limita a una presentación virtual para pruebas.
El diseñador Página 11 de 21
Si selecciona una banda de grupo, se le pedirá una condición, que será el valor que se use para agrupar el informe. Puede usar una de las variables de H6 o cualquier función basada en las variables (campos) que se le ofrecen.
Al pulsar con el botón derecho del ratón en una banda, aparecen nuevas opciones, que son: • Ajustado: Cambia el alto de la banda en función al contenido de sus cuadros de texto, siempre que alguno de ellos contenga múltiples líneas y sus propiedades “ajustado” y “corte automático de palabras” estén activadas La fila completa de la banda adopta la nueva altura. • Partido: Si está activado, y la altura de la última fila de datos supera el espacio restante, el informe se parte, continuando en la siguiente página. En caso contrario, se deja el espacio restante vacío y la fila de datos se imprime en la página siguiente. • Forzar nueva página: Fuerza a saltar a la página siguiente para cada fila de datos. Muy útil cuando queremos sacar un solo registro por hoja. • En la primera página: Solo para bandas de cabecera y pié de página. Si se desmarca, el contenido de la banda no se muestra en primera página. • En la última página: Solo para bandas de pié de página. Si se desmarca, el contenido de la banda no se muestra en última página. • Mostrar en todas las páginas: Solo para bandas de Cabeceras de los tipos: maestra, de detalle, subdetalle, grupo e informes cruzados. Si se marca aparecen en todas las páginas. Si se desmarca solo aparecen en la primera página.
El objeto Imagen Sirve para insertar gráficos. Soporta los formatos BMP/WMF/ICO. JPG y GIF. Incluye un editor que permite cargar y borrar la imagen, o seleccionar una imagen desde un campo MEMO de Base de datos. Para insertar una imagen desde un fichero, localícelo y pulse doble clic sobre él. La inserción de una imagen desde un campo memo se hace automáticamente, simplemente referenciando la variable del campo memo (si está en el conjunto de variables disponibles). En H6 no se precisa hacer esto.
El menú de contexto del objeto proporciona las siguientes propiedades: • Ajustado – La imagen se estrecha en el rectángulo. • Mantener relación de aspecto: Si “ajustado” está marcado, hace que se mantengan las proporciones de alto y ancho. • Centrar: Centra la imagen en el recuadro.
El diseñador Página 12 de 21
El objeto Sub-Informe Se usa para insertar un informe adicional en un punto particular del listado Cuando se genera el informe, el subinforme se coloca en páginas separadas del informe principal. Un ejemplo de esto sería si queremos añadir gráficos adicionales a continuación de los datos normales del listado. Al insertar este objeto, se añade una página adicional; y en el lugar insertado aparece un indicador del nuevo objeto. El SubInforme se mostrará a continuación del informe principal. Si incluimos mas de un sub-informe, se mostrarán uno a continuación del otro en bandas separadas. • • •
Hay ciertos límites en el uso de este objeto: No puede ser usado en informes por columnas Las bandas Titulo, Sumario, Cabecera y pie de página pueden utilizarse en los sub-reports, pero no se podrán asociar al informe principal. No admiten bandas partidas ni grupos.
El objeto Línea Se utiliza para insertar líneas horizontales o verticales. Pueden incluirse en bandas separadas y su estilo y color se configura desde la barra de herramienta “Marco”. Para dibujar una línea, pulse el botón del objeto, mueva el ratón sobre la página activa mostrándose un cursor en forma de lápiz. Trace las líneas libremente con el típico arrastrar y soltar.
El objeto CheckBox (marca) Se usa para mostrar gráficamente valores booleanos (lógicos). El resultado aparece directamente cuando en su interior referenciamos una variable de campo booleano; en cualquier otro caso hay que utilizar métodos especiales para obtener la casilla marcada o vacía.
El objeto Gráfico Inserta figuras geométricas de los tipos rectángulo, rectángulo redondeado, elipse y triángulo.
El objeto Código de Barras Su nombre dice para que sirve. Admitirá los siguientes formatos: • • • • • • • • • • • • •
2 of 5 interleaved Code39 Code39 Extended Code128A-C Code93 Code93 Extended MSI PostNet Codebar EAN8 EAN13 EAN128A-C UPC A, E0, E1, Supp2, Supp5
Este objeto, actualmente está en desarrollo y aparecerá en posteriores revisiones de Hermandad.
El diseñador Página 13 de 21
El inspector de objetos Con el cual, manipulamos las propiedades de los objetos. Cada objeto, según su tipo, dispone de un amplio conjunto de propiedades que nos permiten ajustar su comportamiento a nuestro gusto. El nombre de las propiedades se puede ver traducido a castellano, entrando en Herramientas / opciones y cambiando la casilla “nombre de propiedades traducidas”. Altere las propiedades y aprenda a cambiar su comportamiento. Es la mejor manera de aprender a aplicarlas.
3. Insertando variables Variables de datos [campos preparados para H6]
El diccionario de Datos La integración de Fast Reports con Hermandad prepara un juego de variables que ya están enlazadas a sus correspondientes campos de la Base de datos. Con ello facilitamos el uso de objetos de datos al usuario, denominando los campos con nombres mas comprensibles que los nombres técnicos originales. El juego de variables en su conjunto forma el diccionario de datos, que aunque se muestra en la siguiente pantalla, no está accesible al usuario normal: En el paso previo del diseño de informes, nos encargamos de elegir los campos que compondrán el listado (vea el manual de H6); esto hace que H6 genere automáticamente una variable para cada campo elegido. Esas serán las que forma en el conjunto de variables disponibles. Si detecta que necesita algún campo más, debe salir del diseñador, añadir el campo, y al retornar al diseñador, aparecerá una variable que lo identifica. A las variables disponibles se accede cada vez que intentemos cargar en el editor de texto un dato . Vea la siguiente imagen donde aparecen los tres pasos para llegar a ellas: desde el editor de texto, pasando al constructor de expresiones y , en él, presionando en “variables” se nos muestra el conjunto de ellas.
El diseñador Página 14 de 21
En el diseñador del recibo de procesión, al incluirse un considerable número de campos, las variables a parecen agrupadas, de manera que resulte más cómodo localizarlas.
Variables de sistema Consiste en un juego de campos calculados, que son los siguientes: • Pagina#: ofrece el número de la página actual. Es igual que la Función Page# función (ver descripción en Funciones internas). • Fecha#: muestra la fecha de creación del informe . (equivale ala función Date) • Hora#: hora en que se crea el informe (equivale a la función Time). • Linea#, Linea global#, columna#, LineaActual#, Total paginas: ver descripción en funciones internas. Una expresión puede contener una texto, variables y funciones (mezcladas).
Funciones Para ver el asistente de funciones presione el botón . Contiene la lista de todas las funciones agrupadas, y ejemplos de cómo aplicarlas.
El diseñador Página 15 de 21
4. Las barras de herramientas La barra estándar
Icono
Close
Nombre Nuevo
Descripción Crea nuevo informe vacío
Abrir
Abre un informe existente desde un fichero de extensión FRF
Salvar
Graba el informe en formato y extensión FRF
Vista Previa
Muestra el informe tal cual saldrá impreso
Cortar
Corta objeto y lo deposita en portapapeles
Copiar
Copia objeto y lo deposita en portapapeles
Pegar
Pega objeto desde el portapapeles
Deshacer
Deshace últimos cambios
Rehacer
Rehace la última operación
Poner al frente
Muestra por delante los objetos seleccionados
Enviar detrás
Envía detrás los objetos seleccionados
Selecciona todo
Selecciona todos los objetos de la página
Nueva página
Crea una nueva página
Borra página Opciones de página Muestra rejilla
Borra página actual
Alinear a rejilla
Alinear a rejilla los objetos cuando los movemos
Ajustar a rejilla
Ajusta a rejilla los objetos cuando les cambiamos el tamaño
ayuda Cerrar
Muestra ayuda sensible al contexto Cierra el diseñador
Muestra el cuadro de opciones de página Muestra rejilla
La barra de Texto
No requiere más explicación, al contener todos los procesos normales de cualquier editor
La barra de "Marco" Proporciona el enmarcado de los objetos.
La barra de "Alineación"
Proporciona todos los tipos posibles de alineación de objetos. Bastará seleccionar varios objetos y pulsar sobre el botón que nos proporcione la alineación requerida.
El diseñador Página 16 de 21
Rutinas y objetos Cada objeto puede incorporar uno o más bloques de código. El editor de rutinas aparece en el editor de texto, en una zona inferior identificada por las letras BEGIN y END, entre las cuales habrá que escribir la rutina (conocido como script). Si no aparece, presione sobre el botón en la parte superior de la ventana. El script se ejecuta siempre antes de imprimir el objeto, y suele estar accesible en la propiedad “OnBeforePrint” que es un evento localizable en la lista del Inspector de objetos.
Ejemplo de script
No todos los objetos admiten scripts. Pero los que lo permiten siempre tendrán el evento “OnBeforePrint“ disponible, ya sean bandas o el propio informe. Escribiendo código En los scripts, puede usar propiedades y métodos relativos a los objetos del informe. Además se pueden usar constantes y crear variables propias. Usando variables No hay que especificar el tipo, porque todas se declaran como variant (de cualquier tipo). Pueden tener cualquier nombre, siempre que no se llamen igual que los objetos. Ve el siguiente ejemplos: begin a := [Page#]; end
hemos creado la variable “a” y la hacemos equivalente al número de página ahora podemos usarla en cualquier objeto del informe colocándola entre corchetes Si usamos esto
[a+ 1] equivale al número de página actual mas uno.
Referenciando campos Los campos aparecen internamente como variables predefinidas. Por tanto en los escripts podemos usar cosas como Visible:= [deuda actual] > 10 Que provoca que el objeto solo muestre su contenido cuando se cumple la condición establecida Constantes Consiste en definir variables con un valor fijo y que después podrán aparecer en cualquier objeto del informe entre corchetes. Por ejemplo: begin a := 0; b := 'abcd'; c := True; d := 'eso es todo!'; end; Recuerde usar la comilla simple cuando el valor sea una cadena de texto
El diseñador Página 17 de 21
Referenciando objetos Cada objeto tiene un nombre (propiedad NAME). En los escrips se puede manipular las propiedades de esos objetos llamándolos por su nombre. Debe usar la “notación por punto” para ello, por ejemplo: Memo1.Text.. Si estamos en el mismo campo a modificar, solo habrá que indicar la propiedad. Todas las propiedades aparecen en el inspector de objetos. Ejemplos: begin Memo1.Font.Name := 'Courier New'; Memo1.Font.Size := 10; Memo1.Font.Color := clRed; Memo1.Font.Style := fsBold + fsItalic end; con ello cambiamos todo el formato de letra del objeto Memo1 Observando este ejemplo, vemos ciertos valores constantes de sistema. Eso indica que se pueden usar, y son: • • • • •
colores: clWhite, clBlack etc. – todos los colores estándares y de sistema Estilos para letras: fsBold, fsItalic, fsUnderline; Recuadros (frames): frftNone, frftRight, frftBottom, frftLeft, frftTop; Alineación de texto: frtaLeft, frtaRight, frtaCenter, frtaVertical, frtaMiddle, frtaDown; Alineación de banda: baNone, baLeft, baRight, baCenter, baWidth, baBottom.
Además podemos cambiar el valor de un campo: if Memo1.Lines[1] = 'a' then Memo1.Lines[1] := 'b' en el ejemplo se cambia solo el contenido de la primer línea. Para cambiar todo debemos hacer esto: if Memo1.Lines[1] = 'a' then Memo1.memo := 'b'
Normalmente, los scripts se usan para alterar el comportamiento de los objetos, como el tamaño, color, contenido, etc. Un ejemplo de esto lo vemos en el siguiente escript, donde aparece una rutina que amplía el uso del formato condicional utilizando el intérprete:
begin if [Deuda actual] < 10 then fillcolor:= cltransparent else if [Deuda actual] < 20 then fillcolor:=clgreen else fillcolor:=clred end; con el que usamos tres tipos de color para el valor: si la deuda es menor de 10 no varía, pero si es mayor usamos el verde cuando no pasa de 20 y el rojo cuando es superior.
El diseñador Página 18 de 21
5. Utilizando funciones -Agregadas Normalmente se usan en el sumario, y en los pies de página y grupo •
Sum( [, band] [,1]). Calcula la suma de los valores pasados en para la banda dada. Si no colocamos nombre de la banda, se realiza la suma de todos los valores del informe. El número 1 del tercer parámetro hace que se cuenten también los objetos invisibles
Ejemplo: [Sum([deuda actual], Band1)] • •
//no olvide poner toda la expresión entre corchetes
Avg, Min, Max. Su sintaxis es análoga a la función SUMA. Avg calcula la media aritmética; Min y Max retornan el valor mínimo y maximo respectivamente. Count(). Ofrece la cuenta de filas de datos presentadas en una banda.
- de cadena • Str(). Convierte un número a su valor en formato cadena de texto • Copy(, , ). Retorna una subcadena de con longitud de caracteres, comenzando en la posición . • If(, , ). Retorna la cadena , si la expresión es verdadera, en otro caso retorna . • FormatFloat(, ). Convierte a numérico el valor significativo de , usando como máscara . • FormatDateTime(, ). Convierte a fecha / hora el valor de una cadena, usando la máscara de . • StrToDate(). Convierte la cadena a fecha. • StrToTime(). Convierte la cadena a hora. • UpperCase(). Convierte la cadena a mayúsculas. • LowerCase(). Convierte la cadena a minúsculas. • NameCase(). Convierte el primer carácter de la cadena a mayúsculas y el resto lo deja en minúsculas. • Length(). Retorna la longitud de la cadena . • Trim(). Elimina los espacios al principio y al final de ,devolviendo lo que queda . • Pos(, ). Retorna la posición de cuando coincide en la cadena .
-Aritméticas • • • • • •
Int(). Retorna la parte numérica y entera de . Frac(). Retorna la parte fraccional de . Round(). Retorna el número redondeado. value1 Mod value2. Retorna el resto resultante de dividir by . MinNum(, ). Retorna el menor de dos valores. MaxNum(, ). Retorna el mayor de dos valores.
-Otras funciones • Input( [,]). Muestra una ventana de diálogo cuya cabecera será y una caja de edición. Si se añade el parámetro “default”, este aparece en la caja de edición por defecto. Después, cuando el usuario presiona OK, retorna la cadena introducida. • Date. Devuelve la fecha actual. • Time. Devuelve la hora actual. • Line#. Devuelve el número de la línea actual. • LineThrough#. Devuelve el número de la línea actual contando desde el principio del informe todas sus líneas. • Column#. Devuelve el número de columna actual. • Page#. Devuelve el número de la página actual.
El diseñador Página 19 de 21
• • • • •
TotalPages. Devuelve el número total de páginas. Para usarla hay que poner el informe como de doble pasada. DayOf(). Retorna el día (1..31) de la fecha usada como parámetro. MonthOf(). Retorna el mes de la fecha usada como parámetro. YearOf(). Retorna el año de la fecha usada como parámetro. MessageBox(, , ). Muestra un cuadro de diálogo de tipo mensaje con el texto “text”, la cabecera “caption” y botones. Devuelve el valor que corresponda al botón pulsado (mrOk, mrCancel, mrYes, mrNo). Use los siguientes valores para el parámetro : Botones
Iconos
Mb_Ok mb_OkCancel mb_YesNo mb_YesNoCancel
mb_IconError mb_IconQuestion mb_IconInformation mb_IconWarning
Procedimientos y funciones permitidas en el montaje de un informe • CurY. Retorna la posición “Y” actual donde la próxima banda se imprimirá Se le puede asignar un valor a CurY – para colocarla en otra posición. Para convertir píxeles a milímetros y viceversa, use la equivalencia : 18 píxeles = 5mm. • FreeSpace. Retorna el espacio que le queda a la página en píxeles. • FinalPass. Retorna TRUE (verdadero), si un informe es de doble pasada y está ejecutando la última pasada. • PageHeight. Retorna la altura de la página en píxeles menos la altura de la banda pie de página. • PageWidth. Retorna el ancho de la página en píxeles. • StopReport. Paraliza el montaje del informe. • NewPage. Comienza una nueva página. • NewColumn. Comienza una nueva columna en un informe de múltiple columnas ShowBand(). Muestra la banda denominada . • Para facilitar el uso en escripts, detallamos a continuación todas las propiedades y métodos
6. Propiedades y métodos de los objetos Propiedades y métodos globales Propiedad Tipo Descripción Alineación de objetos en su banda BandAlign Entero Valores posibles: baNone, baLeft, baRight, baCenter, baWidth, baBottom. Enabled Booleano Si TRUE, habilitado: un objeto respondera a eventos. Valores: True o False. FillColor Entero Color del fondo. Se permiten constantes de color de Windows clXXX. FrameColor Entero Color del recuadro de un objeto. Estilo del borde. Valores posibles: psSolid, psDash, psDot, psDashDot, FrameStyle Entero psDashDotDot, psDouble. FrameTyp Entero Tipo de borde – un conjunto de constantes frftTop, frftBottom, frftLeft, frftRight. FrameWidth Decimal Ancho del recuadro. Height Entero Altura del objeto seleccionado. Left Entero Coordenada horizontal izquierda relativa al formulario en píxeles. Texto del objeto. Esta propiedad puede estar accesible por su índice, por Memo Cadena ejemplo: Memo[1]. Memo.Count Entero Retorna el número de líneas en un memo (texto del campo). Name Cadena Nombre del objeto. Stretched Booleano Si TRUE, el objeto presenta sus dimensiones naturales. Top Entero Coordenada superior izquierda relativa a su objeto padre. Indica cuando el objeto debe aparecer en pantalla u ocultarse. Visible Booleano Valores posibles: True o False. Width Entero Ancho del objeto.
El diseñador Página 20 de 21
Métodos Método Hide Memo.Add Memo.Clear Memo.Delete Show
Parámetros Cadena Entero -
Objetos estándares Propiedad
Descripción Oculta el objeto poniendo su propiedad visible a False. Añade una nueva línea al contenido del campo. Borra todo el texto del campo. Elimina la línea especificada por el número dado como parámetro. Muestra un objeto, poniendo su propiedad visible a True.
Tipo
Alignment
Entero
AutoWidth
Booleano
CharSpacing Font.Name Font.Size
Entero Cadena Entero
Font.Style
Entero
Font.Color GapX GapY HideZeros LineSpacing
Entero Entero Entero Booleano Entero
Suppress
Booleano
TextOnly
Booleano
WordBreak
Booleano
WordWrap
Booleano
Objeto "Banda" Propiedad Breaked ChildBand ColumnGap Columns ColumnWidth Condition DataSource EOF
Tipo Booleano Cadena Entero Entero Entero Cadena Cadena Booleano
FormNewPage
Booleano
Master OnFirstPage OnLastPage
Cadena Booleano Booleano
PrintChildIfInvisible
Booleano
PrintIfSubsetEmpty
Booleano
RepeatHeader
Booleano
Descripción Alineación del texto en el objeto Valores posibles: frtaLeft, frtaRight, frtaCenter, frtaVertical, frtaMiddle, frtaDown. Hace que el objeto se ensanche automáticamente a la necesidad dela totalidad de texto que contiene. Espacio entre caracteres. Nombre del tipo de letra utilizado Tamaño de letra en píxeles. Estilo: negrita, cursiva, subrayado. Valores posibles:fsBold, fsItalic, fsUnderline. Color de la letra. Distancia horizontal entre el borde y el texto que contiene. Distancia vertical entre el borde y el texto que contiene. Si contiene un valor CERO se ignora. Valores posibles: True; False. Espacio entre las líneas del texto. Oculta el dato si se repite respecto del anterior registro. Valores posibles:: True; False. Hace que no se procese o interprete el contenido, mostrando solo el literal. Valores posibles: True; False. Cuando una palabra sobrepasa el margen derecho permite que se troceen las últimas sílabas. Valores posibles: True; False Cuando una palabra sobrepasa el margen derecho permite que se trocee en 2 ó mas líneas. Valores posibles: True; False
Descripción Ruptura de bandas. Valores posibles: True; False. La banda enlaza datos a otra banda hija Distancia horizontal entre columnas Número de columnas en la banda Ancho de las columnas. Condiciones para grupos. Aplicada a bandas cabecera de grupo. Conjunto de datos a mostrar. Indica si se ha llegado al fin de los datos. Valores: True; False. Fuerza la salida de una nueva página tras imprimir la banda. Valores posibles: True; False. Especifica la banda usada cuando se agrupan datos. Se imprime en la primera página. Valores posibles: True; False. Se imprime en la última página. Valores posibles: True; False. Especifica si se imprime una banda hija cuando su banda padre es invisible. Valores posibles:True; False. Especifica si se imprime una banda cuando su banda hija está vacía. Valores posibles: True; False. Especifica cuando se repite una banda en cada página Valores posibles: True; False.
El diseñador Página 21 de 21
Métodos First Next Prior
Objeto "Imagen" Propiedad
Parámetros -
Tipo
BlobType
Entero
Center
Booleano
DataField
Cadena
KeepAspect
Booleano
Objeto "CheckBox" Propiedad CheckColor CheckStyle DataField
Tipo Entero Entero Cadena
Descripción Establece el datasource de una banda en el primer registro. Establece el datasource de una banda en el siguiente registro. Establece el datasource de una banda en el anterior registro.
Descripción Especifica el tipo de imagen contenida en un campo blob (memo). Valores posibles: btBMP, btJPG, btICO, btWMF. Especifica cuando ha de centrar la imagen en el objeto. Valores posibles:True; False. Especifica el campo de la tabla que contiene la imagen. Para mantener las proporciones relativas de la imagen, al ser estirada. Valores posibles: true; False.
Descripción Color de la marca cruzada cuando está chequeado Estilo de la marca. Valores posibles: csCross, csCheck. Nombre del campo que contiene el dato
Objeto "Rectángulo sombreado" Es un objeto descendente del “cuadro de texto”, por lo que tiene todas sus propiedades, y además, como propias, las siguientes: Propiedad BeginColor EndColor Gradient RoundRect
Tipo Entero Entero Booleano Booleano
RoundSize
Entero
ShadowColor ShadowWidth
Entero Entero
Style
Entero
Objeto "Dibujo" Propiedad Shape
Tipo Entero
Descripción Color inicial utilizando sistema gradual (gradiente) Color final utilizando sistema gradual (gradiente) Uso del sistema gradual. Valores posibles: True; False. Esquinas redondeadas. Valores posibles:: True; False. Si las esquinas están redondeadas, esta propiedad indica el grado de redondeo. Color de la sombra. Ancho de la sombra. Si se usa efecto gradual, esta propiedad especifica el estilo de gradiente. Valores posibles: gsVertical, gsHorizontal, gsElliptic, gsRectangle, gsHorizCenter, gsVertCenter.
Descripción Determina el tipo de dibujo del objeto. Valores posibles: skRectangle, skRoundRectangle, skEllipse, skTriangle, skDiagonal1, skDiagonal2.