Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie eine Berichtsdatei programmgesteuert ändern, um die Schriftfarbe eines Felds zu ändern.
Originalproduktversion: Visual FoxPro
Ursprüngliche KB-Nummer: 188403
Übersicht
Es kann wünschenswert sein, Berichtsfelder programmgesteuert zu ändern, um Werte zu unterscheiden oder das Format je nach Bedingung anderweitig zu ändern. In diesem Artikel wird veranschaulicht, wie Die Schriftfarbe eines Berichtsfelds basierend auf den Gesamtumsatzsummen eines einzelnen Verkäufers geändert wird. Während diese Technik in Microsoft Visual FoxPro 9.0 Professional Edition funktioniert, können Sie dieselben Ergebnisse mithilfe von Report Listener und ereignisgesteuertem Drucken abrufen.
Weitere Informationen
Im Folgenden wird eine Tabelle erstellt, die Tabelle aufgefüllt und ein Umsatzbericht ausgeführt, wobei die Schriftfarbe so geändert wird, dass sie die Gesamtsummen des Umsatzes widerspiegelt. Um die Farbe eines Berichtsfelds zu ändern, werden die Felder PenRed, PenGreen und PenBlue des Datensatzes des Berichtsfelds geändert. Diese Methode kann auch verwendet werden, um den Schriftschnitt, den Schriftgrad oder sogar die Position des Felds zu ändern. Darüber hinaus kann eine gesamte Klasse von Objekten geändert werden, indem ALLE <Eigenschaftsfelder> DURCH <Eigenschaftswerte> FÜR objtype = 8 ersetzt werden.
Speichern Sie den folgenden Code in einer Programmdatei namens Maketabs.prg , und führen Sie das Programm aus, um eine Tabelle zu erstellen und aufzufüllen.
Beispielcode
*-- 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
Erstellt einen Bericht. Fügen Sie im Seitenkopfband ein Berichtsfeld hinzu, und erstellen Sie den Ausdruck salestot.id. Fügen Sie im Bereich "Detail" ein Berichtsfeld hinzu, und erstellen Sie den Ausdruck "salestot.invamt". Fügen Sie im Bereich "Seitenfuß" ein Berichtsfeld hinzu, und erstellen Sie den Ausdruck "salestot.invamt". Klicken Sie im Dialogfeld "Berichtsausdruck" auf die Schaltfläche "Berechnungen". Wählen Sie "Summe" aus, klicken Sie auf "OK", und klicken Sie dann erneut auf "OK". Speichern Sie den Bericht als Sales.frx.
Speichern Sie den folgenden Code in einer Programmdatei namens "Sales.prg", und führen Sie das Programm aus:
*-- 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.
Wenn jeder Bericht in der Vorschau angezeigt wird, scrollen Sie nach unten, um die Zusammenfassung anzuzeigen und zu beobachten, wie sich die Farbe für jeden Vertriebsmitarbeiter ändert.