Fächer farbig markieren

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