Programowe modyfikowanie pól raportu w programie Visual FoxPro

W tym artykule przedstawiono sposób programowego modyfikowania pliku raportu w celu zmiany koloru czcionki pola.

Oryginalna wersja produktu: Visual FoxPro
Oryginalny numer KB: 188403

Podsumowanie

Programowa zmiana pól raportu może być pożądana w celu rozróżnienia wartości lub zmodyfikowania formatu w inny sposób w zależności od warunku. W tym artykule pokazano, jak zmienić kolor czcionki pola raportu na podstawie sum sprzedaży poszczególnych sprzedawców. Chociaż ta technika działa w programie Microsoft Visual FoxPro 9.0 Professional Edition, możesz uzyskać te same wyniki za pomocą odbiornika raportów i drukowania opartego na zdarzeniach.

Więcej informacji

Poniższa tabela tworzy tabelę, wypełnia tabelę i uruchamia raport sprzedaży, zmieniając kolor czcionki w celu odzwierciedlenia sum sprzedaży. Aby zmienić kolor pola raportu, są modyfikowane pola PenRed, PenGreen i PenBlue rekordu pola raportu. Ta metoda może służyć do zmiany stylu czcionki, rozmiaru czcionki, a nawet zmiany położenia pola. Ponadto można zmienić całą klasę obiektów, na przykład za pomocą pola> właściwości REPLACE ALL <z <wartością> właściwości FOR objtype = 8.

  1. Zapisz następujący kod w pliku programu o nazwie Maketabs.prg i uruchom program, aby utworzyć i wypełnić tabelę.

    Przykładowy kod

     *-- 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. Utwórz raport. W pasmie Nagłówek strony dodaj pole raportu i wprowadź wyrażenie salestot.id. W pasmie Szczegóły dodaj pole raportu i utwórz wyrażenie salestot.invamt. W paśmie Stopka strony dodaj pole raportu i utwórz wyrażenie salestot.invamt. Kliknij przycisk Obliczenia w oknie dialogowym Wyrażenie raportu. Wybierz pozycję Suma, kliknij przycisk OK, a następnie ponownie kliknij przycisk OK. Zapisz raport jako Sales.frx.

  3. Zapisz następujący kod w pliku programu o nazwie Sales.prg i uruchom program:

     *-- 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. Gdy każdy raport jest wyświetlany w wersji zapoznawczej, przewiń w dół, aby wyświetlić podsumowanie i obserwować, jak zmienia się kolor każdego sprzedawcy.