Как да модифицирате програмно полета на отчета във визуален FoxPro


Обобщена информация


Възможно е да е желателно да промените програмно полета за отчети, за да разграничите стойности или да промените формата в зависимост от дадено условие. Тази статия показва как да промените цвета на шрифта на поле за отчет, базирано на общите суми на продажбите за отделен търговец. Докато тази техника работи в Microsoft Visual FoxPro 9,0 Professional Edition, можете да получите същите резултати с помощта на функцията за слушател и базирано на събития.

Повече информация


Следващото създава таблица, попълва таблицата и изпълнява отчет за продажбите, като променя цвета на шрифта, за да отрази общите суми за продажби. За да промените цвета на поле за отчет, полетата PenRed, PenGreen и PenBlue на записа на полето за отчет се променят. Този метод може да се използва за промяна на стила на шрифта, размера на шрифта или дори за преместване на полето. Освен това може да се промени целият клас обекти, като се използва замести всички <поле за свойства> със <стойност на свойството> за objtype = 8 например.
  1. Запишете следния код в програмен файл с име Maketabs. PRG и стартирайте програмата, за да създадете и попълните таблица. Примерен код-----------
                *-- 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
  2. Създаване на отчет. В групата заглавие на страницата Добавете поле за отчет и направете израза salestot.id. В групата подробни данни Добавете поле report и направете Expression salestot. invamt. В групата долни колонтитули на страницата Добавете поле report и направете Expression salestot. invamt. Щракнете върху бутона "изчисления" в диалоговия прозорец "израз за отчети". Изберете SUM, щракнете върху OK, след което щракнете върху OK отново. Запишете отчета като Sales. FRx.
  3. Запишете следния код в програмен файл с име Sales. PRG и стартирайте програмата:
          *-- 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.
  4. Докато всеки отчет се визуализира, превъртете до долния край, за да видите резюмето, и наблюдавайте как цветът се променя за всеки търговец.

Препратки


(в) Microsoft Corporation 1998, всички права запазени. Участия на Майк Стюарт, Microsoft Corporation