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.
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
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.
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.
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.