{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}