Modificación mediante programación de campos de informe en Visual FoxPro
En este artículo se presenta cómo modificar mediante programación un archivo de informe para cambiar el color de fuente de un campo.
Versión original del producto: Visual FoxPro
Número de KB original: 188403
Resumen
Puede ser conveniente cambiar los campos de informe mediante programación para diferenciar valores o modificar el formato en función de una condición. En este artículo se muestra cómo cambiar el color de fuente de un campo de informe en función de los totales de ventas de un vendedor individual. Aunque esta técnica funciona en Microsoft Visual FoxPro 9.0 Professional Edition, puede obtener los mismos resultados mediante report listener e impresión controlada por eventos.
Más información
A continuación se crea una tabla, se rellena la tabla y se ejecuta un informe de ventas, se cambia el color de fuente para reflejar los totales de ventas. Para cambiar el color de un campo de informe, se modifican los campos PenRed, PenGreen y PenBlue del registro del campo de informe. Este método se podría usar para cambiar también el estilo de fuente, el tamaño de fuente o incluso para cambiar la posición del campo. Además, se podría cambiar una clase completa de objetos mediante el campo> de propiedad REPLACE ALL <WITH <con el valor> de propiedad FOR objtype = 8, por ejemplo.
Guarde el código siguiente en un archivo de programa denominado Maketabs.prg y ejecute el programa para crear y rellenar una tabla.
Código de ejemplo
*-- Code begins here. CREATE TABLE sales (ID c(10), invamt N(8,2)) INSERT INTO sales (ID, invamt) VALUES ("JOE", 1000) INSERT INTO sales (ID, invamt) VALUES ("MARY", 2000) INSERT INTO sales (ID, invamt) VALUES ("HARRY", 500) INSERT INTO sales (ID, invamt) VALUES ("JOE", 1001) INSERT INTO sales (ID, invamt) VALUES ("MARY", 2001) INSERT INTO sales (ID, invamt) VALUES ("HARRY", 501) INSERT INTO sales (ID, invamt) VALUES ("JOE", 1002) INSERT INTO sales (ID, invamt) VALUES ("MARY", 2002) INSERT INTO sales (ID, invamt) VALUES ("HARRY", 502) *-- Code ends here
Cree un informe. En la banda Encabezado de página, agregue un campo de informe y haga que la expresión salestot.id. En la banda Detalles, agregue un campo de informe y convierta la expresión salestot.invamt en . En la banda Pie de página, agregue un campo de informe y haga que la expresión salestot.invamt. Haga clic en el botón Cálculos del cuadro de diálogo Expresión de informe. Seleccione Suma, haga clic en Aceptary, a continuación, haga clic en Aceptar de nuevo. Guarde el informe como Sales.frx.
Guarde el código siguiente en un archivo de programa denominado Sales.prg y ejecute el programa:
*-- Code begins here. SET TALK OFF *-- Get a list of salespersons. SELECT DISTINCT id FROM sales INTO CURSOR list *-- Step through the list and print sales results for each *-- salesperson. SCAN SELECT * FROM sales WHERE id = list.id INTO CURSOR salestot *-- Get the total sales for this person. SUM invamt TO lnTotal SELECT 0 *-- Open the report file as a table. USE sales.frx *-- We're looking for a field (objtype) that is *-- calculated (totaltype) and whose expression *-- (expr) is equal to table field we're calculating. LOCATE FOR objtype = 8 AND totaltype = 2 AND ; ATC("salestot.invamt", expr) > 0 *-- Save the values for the pen and fill fields. lnPenRed = penred lnPenGreen = pengreen lnPenBlue = penblue *-- Modify the font color for the sales total. DO CASE CASE lnTotal > 3000 AND lnTotal < 6000 && Print green REPLACE penred WITH 0, pengreen WITH 255, penblue WITH 0 CASE lnTotal > 6000 && Print blue REPLACE penred WITH 0, pengreen WITH 0, penblue WITH 255 OTHERWISE && Print dark red on white REPLACE penred WITH 128, pengreen WITH 0, penblue WITH 0 ENDCASE USE SELECT salestot *-- Change PREVIEW to TO PRINTER to print the report. REPORT FORM sales PREVIEW ENDSCAN() *-- Restore the original values. USE sales.frx LOCATE FOR objtype = 8 AND totaltype = 2 AND ; ATC("sales.invamt", expr) > 0 REPLACE penred WITH lnPenRed, pengreen WITH lnPenGreen,; penblue WITH lnPenBlue USE CLOSE DATA *-- Code ends here.
A medida que se obtenga una vista previa de cada informe, desplácese hasta la parte inferior para ver el resumen y observar cómo cambia el color de cada vendedor.