{slide=Fächer farbig markieren}
Wie kann man in einem Report die Fächer unterschiedlich farbig markieren?
- Zunächst erstellt man wie gewohnt ein Formular, in dem z. B. im Subreport “Klassenlehrer_mit_Faechern die Fächer aufgerufen werden. (im Bsp: DataField “FachKrz”).
- Im Reiter “Berechnungen” schaltet man über das Menü auf “Ansicht > Verwendete Module” und wählt unter “Deklarationen” den Eintrag “Constants”. (Achtung: Es muss das Blatt “Hauptbericht” ausgewählt sein!)
- Unter dem Eintrag “const” definiert man nun die gewünschten Farben. Im folgenden sind alle in LuPO verwendeten Fächerfarben defininert:
clDeutsch = 14281213;
clSprachen = 12836349;
clKuMu = 10865916;
clLi = 8764154;
clGW = 14610922;
clRU = 12379351;
clM = 15849925;
clNW = 14922893;
clSp = 16777215;
clVX = 14211288;
clPX = 12566463;
Wenn man den Farbcode einer Farbe herausfinden möchte, kann man die Freeware ColorPicker verwenden: Man zieht aus dem Programm den Cursor über die gewünschte Bildschirmfarbe und kann den 8-stelligen Code im Porgrammfenster ablesen. - Über “Ansicht > Ereignisse” kann man nun (im Subreport) das Datenfeld auswählen und im Ereignis “OnGetText” den passenden Code eingeben:
vor “begin” einfügen:
var
Fach:string;
nach “begin” einfügen:
Fach:=Text;
If (Fach = ‘D’)
then DTB_Fach.Color := clDeutsch
Else If (Fach = ‘E5’) or (Fach = ‘F6’) OR (Fach = ‘F0’) OR (Fach = ‘L6’) OR (Fach = ‘L0’) OR (Fach = ‘S0’) OR (Fach = ‘C0’)
then DTB_Fach.Color := clSprachen
Else If (Fach = ‘KU’) or (Fach = ‘MU’)
then DTB_Fach.Color := clKuMu
Else If (Fach = ‘LI’)
then DTB_Fach.Color := clLi
Else If (Fach = ‘EK’) OR (Fach = ‘PÄ’) OR (Fach = ‘PA’) OR (Fach = ‘GE’) OR (Fach = ‘SW’) OR (Fach = ‘PL’) OR (Fach = ‘GEZ’) OR (Fach = ‘SWZ’)
then DTB_Fach.Color := clGW
Else If (Fach = ‘KR’) or (Fach = ‘ER’)
then DTB_Fach.Color := clRU
Else If Fach = ‘M’
then DTB_Fach.Color := clAqua
Else If (Fach = ‘BI’) or (Fach = ‘PH’) or (Fach = ‘CH’) OR (Fach = ‘IF’)
then DTB_Fach.Color := clNW
Else If Fach = ‘SP’
then DTB_Fach.Color := clSp
Else If (Fach = ‘VXD’) OR (Fach = ‘VXE’) OR (Fach = ‘VXM’)
then DTB_Fach.Color := clVX
Else If (Fach = ‘PXB’) OR (Fach = ‘PXK’) OR (Fach = ‘PXE’)
then DTB_Fach.Color := clPX
Else DTB_Fach.Color := clWindow;
Falls die Farbe noch nicht angezeigt wird, muss evtl. bei den Eigenschaften des Datenfeldes unter “Appearance” die Eigenschaft “Transparent” deaktiviert werden. - Wer möchte, dass der Benutzer vor dem Druck wählen kann, ob Farben verwendet werden sollen, ergänzt den Report folgendermaßen:
- globale Variable “Farbe:integer;” definieren (unter “Ansicht > Verwendete Module”: Variables
- Im Ereignis “ReportBeforePrint” die Abfrage “Farbe:=SelectOption(‘Mit Farbe ausgeben?’, ‘nein|ja’, ‘|’);” einfügen.
- vor dem oben beschriebenen Code des Datenfeldes (also vorFach:=Text;) einfügen
if Farbe=1 then
begin
und danach
end;
{/slide}