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}