#ifndef Tabelle_H
#define Tabelle_H

#include "Array.h"
#include "Zeichnung.h"

namespace Framework
{
    class Rahmen;     //! Rahmen.h
    class AlphaFeld;  //! AlphaFeld.h
    class VScrollBar; //! Scroll.h
    class HScrollBar; //! Scroll.h
    class Text;       //! Text.h
    class ObjTabelle; //! aus dieser Datei

    //! Verwaltet eine Tabelle aus Zeichnungen
    class ObjTabelle : public ZeichnungHintergrund
    {
    public:
        class Style : public ZeichnungHintergrund::Style
        {
        public:
            static const __int64 SpaltenBreiteChangeable
                = 0x00001000; //! Wenn dieser Flag gesetzt wird, so kann der
                              //! Benutzer die Spalten mit der Maus vergrößern
                              //! und verkleinern
            static const __int64 ZeilenHeightChangeable
                = 0x00002000; //! Wenn dieser Flag gesetzt wird, so kann der
                              //! Benutzer die Spalten mit der Maus vergrößern
                              //! und verkleinern
            static const __int64 SpaltenBreiteMin
                = 0x00004000; //! Wenn dieser Flag gesetzt wird, so kann der
                              //! Nutzer trotz des Flags SpaltenBreiteÄnderbar
                              //! die Spaltenbreite nicht kleiner machen als
                              //! eine bestimmte Grenze
            static const __int64 SpaltenBreiteMax
                = 0x00008000; //! Wenn dieser Flag gesetzt wird, so kann der
                              //! Nutzer trotz des Flags SpaltenBreiteÄnderbar
                              //! die Spaltenbreite nicht größer machen als eine
                              //! bestimmte Grenze
            static const __int64 ZeilenHeightMin
                = 0x00010000; //! Wenn dieser Flag gesetzt wird, so kann der
                              //! Nutzer trotz des Flags ZeilenHöheÄnderbar die
                              //! Zeilenhöhe nicht kleiner machen als eine
                              //! bestimmte Grenze
            static const __int64 ZeilenHeightMax
                = 0x00020000; //! Wenn dieser Flag gesetzt wird, so kann der
                              //! Nutzer trotz des Flags ZeilenHöheÄnderbar die
                              //! Zeilenhöhe nicht größer machen als eine
                              //! bestimmte Grenze
            static const __int64 SpaltenBeweglich
                = 0x00040000; //! Wenn dieser Flag gesetzt wird, so kann der
                              //! Nutzer die Reihenfolge der Spalten bestimmen,
                              //! in dem er sie per Drag and Drop verschiebt
            static const __int64 ZeilenBeweglich
                = 0x00800000; //! Wenn dieser Flag gesetzt wird, so kann der
                              //! Nutzer die Reihenfolge der Zeilen bestimmen,
                              //! in dem er sie per Drag and Drop verschiebt
            static const __int64 AuswahlRahmen
                = 0x0080000; //! Wenn dieser Flag gesetzt ist, so bekommt das
                             //! Feld, dass der Benutzer durch den Flag Erlaubt
                             //! auswählen kann einen anderen Rahmen
            static const __int64 AuswahlBuffer
                = 0x00100000; //! Wenn dieser Flag gesetzt ist, so bekommt das
                              //! Feld, dass der Benutzer durch den Flag Erlaubt
                              //! auswählen kann ein anderes AlphaFeld
            static const __int64 AuswahlMultistyled
                = 0x00200000; //! Wenn dieser Flag gesetzt ist, so kann jedes
                              //! Feld andere Rahmen und AlphaFelder beim
                              //! Auswählen haben.
            static const __int64 Raster
                = 0x00400000; //! Wenn dieser Flag gesetzt ist, so werden
                              //! zwischen den Feldern Linien gezeichnet

            static const __int64 beweglich
                = SpaltenBreiteChangeable | ZeilenHeightChangeable
                | SpaltenBeweglich
                | ZeilenBeweglich; //! Vereint die Flags: SpaltenBreiteÄnderbar,
                                   //! ZeilenHöheÄnderbar, SpaltenBeweglich,
                                   //! ZeilenBeweglich
            static const __int64 min_max
                = SpaltenBreiteMax | SpaltenBreiteMin | ZeilenHeightMax
                | ZeilenHeightMax; //! Vereint die Flags: SpaltenBreiteMax,
                                   //! SpaltenBreiteMin, ZeilenHöheMax,
                                   //! ZeilenHöheMax
            static const __int64 scroll
                = VScroll | HScroll; //! Vereint die Flags: VScroll, HScroll
            static const __int64 normal
                = Rahmen | Erlaubt | Sichtbar | AuswahlBuffer | AuswahlRahmen
                | Raster | MEIgnoreInside | MEIgnoreParentInside
                | MEIgnoreSichtbar
                | MEIgnoreVerarbeitet; //! Vereint die Flags: Rahmen, Erlaubt,
                                       //! Sichtbar, SpaltenBeweglich,
                                       //! AuswahlBuffer, AuswahlRahmen, Raster
        };

    private:
        RCArray<RCArray<Zeichnung>>* members;
        RCArray<Text>* spaltenNamen;
        RCArray<Text>* zeilenNamen;
        Array<int>* spaltenBreite;
        Array<int>* zeilenHeight;
        Array<int>* minSpaltenBreite;
        Array<int>* maxSpaltenBreite;
        Array<int>* minZeilenHeight;
        Array<int>* maxZeilenHeight;
        int spaltenAnzahl, zeilenAnzahl;
        int klickSpalte;
        int klickZeile;
        double mSpalte, mZeile;
        int mx, my;
        Punkt selected;
        int rasterFarbe;
        int rasterBreite;
        Rahmen* aRam;
        AlphaFeld* aAf;
        RCArray<RCArray<Rahmen>>* msaRam;
        RCArray<RCArray<AlphaFeld>>* msaAf;
        RCArray<Array<__int64>>* styles;
        //! Verarbeitet Maus Nachrichten
        //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde
        DLLEXPORT void doMausEreignis(MausEreignis& me, bool userRet) override;

    public:
        //! Konstruktor
        DLLEXPORT ObjTabelle();
        //! Destruktor
        DLLEXPORT virtual ~ObjTabelle();
        //! Fügt der Tabelle eine Spalte hinzu
        //! \param name Der Name der Spalte
        DLLEXPORT void addSpalte(const char* name);
        //! Fügt der Tabelle eine Spalte hinzu
        //! \param name Der Name der Spalte
        DLLEXPORT void addSpalte(Text* name);
        //! Fügt der Tabelle an einer bestimmten Position eine Spalte hinzu
        //! \param sNum Der Index der neuen Spalte
        //! \param name Der Name der neuen Spalte
        DLLEXPORT void addSpalte(int sNum, const char* name);
        //! Fügt der Tabelle an einer bestimmten Position eine Spalte hinzu
        //! \param sNum Der Index der neuen Spalte
        //! \param name Der Name der neuen Spalte
        DLLEXPORT void addSpalte(int sNum, Text* name);
        //! Fügt der Tabelle eine Zeile hinzu
        //! \param name Der Name der Zeile
        DLLEXPORT void addZeile(const char* name);
        //! Fügt der Tabelle eine Zeile hinzu
        //! \param name Der Name der Zeile
        DLLEXPORT void addZeile(Text* name);
        //! Fügt der Tabelle an einer bestimmten Position eine Zeile hinzu
        //! \param zNum Der Index der neuen Zeile
        //! \param name Der Name der neuen Zeile
        DLLEXPORT void addZeile(int zNum, const char* name);
        //! Fügt der Tabelle an einer bestimmten Position eine Zeile hinzu
        //! \param sNum Der Index der neuen Zeile
        //! \param name Der Name der neuen Zeile
        DLLEXPORT void addZeile(int zNum, Text* name);
        //! Entfernt eine Spalte
        //! \param sNum Der Index der Spalte
        DLLEXPORT void removeSpalte(int sNum);
        //! Entfernt eine Spalte
        //! \param name Der Name der Spalte
        DLLEXPORT void removeSpalte(const char* name);
        //! Entfernt eine Spalte
        //! \param name Der Name der Spalte
        DLLEXPORT void removeSpalte(Text* name);
        //! Entfernt eine Zeile
        //! \param zNum Der Index der Zeile
        DLLEXPORT void removeZeile(int zNum);
        //! Entfernt eine Zeile
        //! \param name Der Name der Zeile
        DLLEXPORT void removeZeile(const char* name);
        //! Entfernt eine Zeile
        //! \param name Der Name der Zeile
        DLLEXPORT void removeZeile(Text* name);
        //! Setzt den Index einer Spalte
        //! \param name Der Name der Spalte
        //! \param pos Der neue Index der Spalte
        DLLEXPORT void setSpaltePosition(const char* name, int pos);
        //! Setzt den Index einer Spalte
        //! \param name Der Name der Spalte
        //! \param pos Der neue Index der Spalte
        DLLEXPORT void setSpaltePosition(Text* name, int pos);
        //! Setzt den Index einer Spalte
        //! \param sNum Der alte Index der Spalte
        //! \param pos Der neue Index der Spalte
        DLLEXPORT void setSpaltePosition(int sNum, int pos);
        //! Setzt den Index einer Zeile
        //! \param name Der Name der Zeile
        //! \param pos Der neue Index der Zeile
        DLLEXPORT void setZeilePosition(const char* name, int pos);
        //! Setzt den Index einer Zeile
        //! \param name Der Name der Zeile
        //! \param pos Der neue Index der Zeile
        DLLEXPORT void setZeilePosition(Text* name, int pos);
        //! Setzt den Index einer Zeile
        //! \param zNum Der alte Index der Zeile
        //! \param pos Der neue Index der Zeile
        DLLEXPORT void setZeilePosition(int zNum, int pos);
        //! Setzt ein Zeichnung, welches in einem Bestimmten Feld sein soll
        //! Wenn bereits ein Zeichnung in dem Feld ist, wird es überschrieben.
        //! \param sNum Der Index der Spalte, in der das Zeichnung stehen soll
        //! \param zNum Der Index der Zeile, in der das Zeichnung stehen soll
        //! \param obj Das Zeichnung welches in dem Feld sein soll
        DLLEXPORT void setZeichnungZ(int sNum, int zNum, Zeichnung* obj);
        //! Setzt ein Zeichnung, welches in einem Bestimmten Feld sein soll
        //! Wenn bereits ein Zeichnung in dem Feld ist, wird es überschrieben.
        //! \param spaltenName Der Name der Spalte, in der das Zeichnung stehen
        //! soll \param zeilenName Der Name der Zeile, in der das Zeichnung
        //! stehen soll \param obj Das Zeichnung welches in dem Feld sein soll
        DLLEXPORT void setZeichnungZ(
            const char* spaltenName, const char* zeilenName, Zeichnung* obj);
        //! Setzt ein Zeichnung, welches in einem Bestimmten Feld sein soll
        //! Wenn bereits ein Zeichnung in dem Feld ist, wird es überschrieben.
        //! \param spaltenName Der Name der Spalte, in der das Zeichnung stehen
        //! soll \param zeilenName Der Name der Zeile, in der das Zeichnung
        //! stehen soll \param obj Das Zeichnung welches in dem Feld sein soll
        DLLEXPORT void setZeichnungZ(
            Text* spaltenName, Text* zeilenName, Zeichnung* obj);
        //! Setzt die Spalten Breite
        //! \param sNum Der Index der Spalte
        //! \param br Die Breite in Pixeln
        DLLEXPORT void setSpaltenBreite(int sNum, int br);
        //! Setzt die Spalten Breite
        //! \param name Der Name der Spalte
        //! \param br Die Breite in Pixeln
        DLLEXPORT void setSpaltenBreite(const char* name, int br);
        //! Setzt die Spalten Breite
        //! \param name Der Name der Spalte
        //! \param br Die Breite in Pixeln
        DLLEXPORT void setSpaltenBreite(Text* name, int br);
        //! Setzt die Zeilen Höhe
        //! \param zNum Der Index der Zeile
        //! \param hi Die Höhe in Pixeln
        DLLEXPORT void setZeilenHeight(int zNum, int hi);
        //! Setzt die Zeilen Höhe
        //! \param name Der Index der Zeile
        //! \param hi Die Höhe in Pixeln
        DLLEXPORT void setZeilenHeight(const char* name, int hi);
        //! Setzt die Zeilen Höhe
        //! \param name Der Index der Zeile
        //! \param hi Die Höhe in Pixeln
        DLLEXPORT void setZeilenHeight(Text* name, int hi);
        //! Setzt die minimale Spalten Breite (benötigt Flag:
        //! SpaltenBreiteÄnderbar, SpaltenBreiteMin) \param sNum Der Index der
        //! Spalte \param minBr Die minimale Breite in Pixeln
        DLLEXPORT void setMinSpaltenBreite(int sNum, int minBr);
        //! Setzt die minimale Spalten Breite (benötigt Flag:
        //! SpaltenBreiteÄnderbar, SpaltenBreiteMin) \param name Der Name der
        //! Spalte \param minBr Die minimale Breite in Pixeln
        DLLEXPORT void setMinSpaltenBreite(const char* name, int minBr);
        //! Setzt die minimale Spalten Breite (benötigt Flag:
        //! SpaltenBreiteÄnderbar, SpaltenBreiteMin) \param name Der Name der
        //! Spalte \param minBr Die minimale Breite in Pixeln
        DLLEXPORT void setMinSpaltenBreite(Text* name, int minBr);
        //! Setzt die maximale Spalten Breite (benötigt Flag:
        //! SpaltenBreiteÄnderbar, SpaltenBreiteMax) \param sNum Der Index der
        //! Spalte \param maxBr Die maximale Breite in Pixeln
        DLLEXPORT void setMaxSpaltenBreite(int sNum, int maxBr);
        //! Setzt die maximale Spalten Breite (benötigt Flag:
        //! SpaltenBreiteÄnderbar, SpaltenBreiteMax) \param name Der Name der
        //! Spalte \param maxBr Die maximale Breite in Pixeln
        DLLEXPORT void setMaxSpaltenBreite(const char* name, int maxBr);
        //! Setzt die maximale Spalten Breite (benötigt Flag:
        //! SpaltenBreiteÄnderbar, SpaltenBreiteMax) \param name Der Name der
        //! Spalte \param maxBr Die maximale Breite in Pixeln
        DLLEXPORT void setMaxSpaltenBreite(Text* name, int maxBr);
        //! Setzt die minimale Zeilen Höhe (benötigt Flag: ZeilenHöheÄnderbar,
        //! ZeienHöheMin) \param zNum Der Index der Zeile \param minHi Die
        //! minimale Höhe in Pixeln
        DLLEXPORT void setMinZeilenHeight(int zNum, int minHi);
        //! Setzt die minimale Zeilen Höhe (benötigt Flag: ZeilenHöheÄnderbar,
        //! ZeienHöheMin) \param name Der Name der Zeile \param minHi Die
        //! minimale Höhe in Pixeln
        DLLEXPORT void setMinZeilenHeight(const char* name, int minHi);
        //! Setzt die minimale Zeilen Höhe (benötigt Flag: ZeilenHöheÄnderbar,
        //! ZeienHöheMin) \param name Der Name der Zeile \param minHi Die
        //! minimale Höhe in Pixeln
        DLLEXPORT void setMinZeilenHeight(Text* name, int minHi);
        //! Setzt die maximale Zeilen Höhe (benötigt Flag: ZeilenHöheÄnderbar,
        //! ZeienHöheMax) \param zNum Der Index der Zeile \param maxHi Die
        //! maximale Höhe in Pixeln
        DLLEXPORT void setMaxZeilenHeight(int zNum, int maxHi);
        //! Setzt die maximale Zeilen Höhe (benötigt Flag: ZeilenHöheÄnderbar,
        //! ZeienHöheMax) \param name Der Name der Zeile \param maxHi Die
        //! maximale Höhe in Pixeln
        DLLEXPORT void setMaxZeilenHeight(const char* name, int maxHi);
        //! Setzt die maximale Zeilen Höhe (benötigt Flag: ZeilenHöheÄnderbar,
        //! ZeienHöheMax) \param name Der Name der Zeile \param maxHi Die
        //! maximale Höhe in Pixeln
        DLLEXPORT void setMaxZeilenHeight(Text* name, int maxHi);
        //! Legt fest, welches Feld ausgewählt ist (benötigt Flag: Erlaubt)
        //! \param sNum Der Index der Spalte des Feldes
        //! \param zNum Der Index der Zeile des Feldes
        DLLEXPORT void setAuswahl(int sNum, int zNum);
        //! Legt fest, welches Feld ausgewählt ist (benötigt Flag: Erlaubt)
        //! \param spaltenName Der Name der Spalte des Feldes
        //! \param zeilenName Der Name der Zeile des Feldes
        DLLEXPORT void setAuswahl(
            const char* spaltenName, const char* zeilenName);
        //! Legt fest, welches Feld ausgewählt ist (benötigt Flag: Erlaubt)
        //! \param spaltenName Der Name der Spalte des Feldes
        //! \param zeilenName Der Name der Zeile des Feldes
        DLLEXPORT void setAuswahl(Text* spaltenName, Text* zeilenName);
        //! Setzt dei Farbe des zwischen den Kästchen angezeigten Rasters
        //! \param f Die Farbe im A8R8G8B8 Format
        DLLEXPORT void setRasterFarbe(int f);
        //! Setzt due Breite des zwischen den Kästchen angezeigten Raseter
        //! \param br Die Breite in Pixeln
        DLLEXPORT void setRasterBreite(int br);
        //! Setzte den Zeiger auf einen Rahmen, der um das ausgewählte Kästchen
        //! gezeichnet wird \param ram Der Rahmen
        DLLEXPORT void setARahmenZ(Rahmen* ram);
        //! Setzt die farbe des Rahmens, der um das ausgewählte Kästchen
        //! gezeichnet wird \param f Die Farbe im A8R8G8B8 Format
        DLLEXPORT void setARFarbe(int f);
        //! Setzt die Breite des Rahmens, der um das ausgewählte Kästchen
        //! gezeichnet wird \param br Die Breite in Pixeln
        DLLEXPORT void setARBreite(int br);
        //! Setzt einen Zeiger auf das AlphaFeld, das für das ausgewählte
        //! Kästchen verwendet wird \param af Das AlphaFeld
        DLLEXPORT void setAAlphaFeldZ(AlphaFeld* af);
        //! Setzt die Farbe des AlphaFeldes, das für das ausgewählte Kästchen
        //! verwendet wird \param f Die Farbe im A8R8G8B8 Format
        DLLEXPORT void setAAfFarbe(int f);
        //! Setzt die Stärke des AlphaFeldes, das für das ausgewählte Kästchen
        //! verwendet wird \param st Die Stärke
        DLLEXPORT void setAAfStrength(int st);
        //! Setzt einen Zeiger auf einen Rahmen, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param sNum Der Index der Spalte des Kästchens \param
        //! zNum Der Index der Zeile des Kästchens \param ram Der Rahmen
        DLLEXPORT void setARahmenZ(int sNum, int zNum, Rahmen* ram);
        //! Setzt einen Zeiger auf einen Rahmen, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param spaltenName Der Name der Spalte des Kästchens
        //! \param zeilenName Der Name der Zeile des Kästchens
        //! \param ram Der Rahmen
        DLLEXPORT void setARahmenZ(
            const char* spaltenName, const char* zeilenName, Rahmen* ram);
        //! Setzt einen Zeiger auf einen Rahmen, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param spaltenName Der Name der Spalte des Kästchens
        //! \param zeilenName Der Name der Zeile des Kästchens
        //! \param ram Der Rahmen
        DLLEXPORT void setARahmenZ(
            Text* spaltenName, Text* zeilenName, Rahmen* ram);
        //! Setzt die Farbe von einem Rahmen, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param sNum Der Index der Spalte des Kästchens \param
        //! zNum Der Index der Zeile des Kästchens \param f Die Farbe im
        //! A8R8G8B8 Format
        DLLEXPORT void setARFarbe(int sNum, int zNum, int f);
        //! Setzt die Farbe von einem Rahmen, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param spaltenName Der Name der Spalte des Kästchens
        //! \param zeilenName Der Name der Zeile des Kästchens
        //! \param f Die Farbe im A8R8G8B8 Format
        DLLEXPORT void setARFarbe(
            const char* spaltenName, const char* zeilenName, int f);
        //! Setzt die Farbe von einem Rahmen, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param spaltenName Der Name der Spalte des Kästchens
        //! \param zeilenName Der Name der Zeile des Kästchens
        //! \param f Die Farbe im A8R8G8B8 Format
        DLLEXPORT void setARFarbe(Text* spaltenName, Text* zeilenName, int f);
        //! Setzt die Breite von einem Rahmen, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param sNum Der Index der Spalte des Kästchens \param
        //! zNum Der Index der Zeile des Kästchens \param br Die Breite in
        //! Pixeln
        DLLEXPORT void setARBreite(int sNum, int zNum, int br);
        //! Setzt die Breite von einem Rahmen, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param spaltenName Der Name der Spalte des Kästchens
        //! \param zeilenName Der Name der Zeile des Kästchens
        //! \param br Die Breite in Pixeln
        DLLEXPORT void setARBreite(
            const char* spaltenName, const char* zeilenName, int br);
        //! Setzt die Breite von einem Rahmen, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param spaltenName Der Name der Spalte des Kästchens
        //! \param zeilenName Der Name der Zeile des Kästchens
        //! \param br Die Breite in Pixeln
        DLLEXPORT void setARBreite(Text* spaltenName, Text* zeilenName, int br);
        //! Setzt den Farbüergang, der bei dem Flag AuswahlMultistyled bei der
        //! Auswahl eines bestimmten Kästchens verwendte wird \param sNum Der
        //! Index der Spalte des Kästchens \param zNum Der Index der Zeile des
        //! Kästchens \param af Der Farbübergang
        DLLEXPORT void setAAlphaFeldZ(int sNum, int zNum, AlphaFeld* af);
        //! Setzt den Farbüergang, der bei dem Flag AuswahlMultistyled bei der
        //! Auswahl eines bestimmten Kästchens verwendte wird \param spaltenName
        //! Der Name der Spalte des Kästchens \param zeilenName Der Name der
        //! Zeile des Kästchens \param af Der Farbübergang
        DLLEXPORT void setAAlphaFeldZ(
            const char* spaltenName, const char* zeilenName, AlphaFeld* af);
        //! Setzt den Farbüergang, der bei dem Flag AuswahlMultistyled bei der
        //! Auswahl eines bestimmten Kästchens verwendte wird \param spaltenName
        //! Der Name der Spalte des Kästchens \param zeilenName Der Name der
        //! Zeile des Kästchens \param af Der Farbübergang
        DLLEXPORT void setAAlphaFeldZ(
            Text* spaltenName, Text* zeilenName, AlphaFeld* af);
        //! Setzt die Farbe des Farbüergangs, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param sNum Der Index der Spalte des Kästchens \param
        //! zNum Der Index der Zeile des Kästchens \param f Die Farbe im
        //! A8R8G8B8 Format
        DLLEXPORT void setAAfFarbe(int sNum, int zNum, int f);
        //! Setzt die Farbe des Farbüergangs, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param spaltenName Der Name der Spalte des Kästchens
        //! \param zeilenName Der Name der Zeile des Kästchens
        //! \param f Die Farbe im A8R8G8B8 Format
        DLLEXPORT void setAAfFarbe(
            const char* spaltenName, const char* zeilenName, int f);
        //! Setzt die Farbe des Farbüergangs, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param spaltenName Der Name der Spalte des Kästchens
        //! \param zeilenName Der Name der Zeile des Kästchens
        //! \param f Die Farbe im A8R8G8B8 Format
        DLLEXPORT void setAAfFarbe(Text* spaltenName, Text* zeilenName, int f);
        //! Setzt die Stärke des Farbüergangs, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param sNum Der Index der Spalte des Kästchens \param
        //! zNum Der Index der Zeile des Kästchens \param st Die Stärke
        DLLEXPORT void setAAfStrength(int sNum, int zNum, int st);
        //! Setzt die Stärke des Farbüergangs, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param spaltenName Der Name der Spalte des Kästchens
        //! \param zeilenName Der Name der Zeile des Kästchens
        //! \param st Die Stärke
        DLLEXPORT void setAAfStrength(
            const char* spaltenName, const char* zeilenName, int st);
        //! Setzt die Stärke des Farbüergangs, der bei dem Flag
        //! AuswahlMultistyled bei der Auswahl eines bestimmten Kästchens
        //! verwendte wird \param spaltenName Der Name der Spalte des Kästchens
        //! \param zeilenName Der Name der Zeile des Kästchens
        //! \param st Die Stärke
        DLLEXPORT void setAAfStrength(
            Text* spaltenName, Text* zeilenName, int st);
        //! Fügt Styles hinzu, die bei dem Flag AuswahlMultistyled bei der
        //! Auswahl eines bestimmten Kästchens verwendte werden \param sNum Der
        //! Index der Spalte des Kästchens \param zNum Der Index der Zeile des
        //! Kästchens \param style der Style, der hinzugefügt werden soll
        DLLEXPORT void addMsStyle(int sNum, int zNum, __int64 style);
        //! Fügt Styles hinzu, die bei dem Flag AuswahlMultistyled bei der
        //! Auswahl eines bestimmten Kästchens verwendte werden \param
        //! spaltenName Der Name der Spalte des Kästchens \param zeilenName Der
        //! Name der Zeile des Kästchens \param style der Style, der hinzugefügt
        //! werden soll
        DLLEXPORT void addMsStyle(
            const char* spaltenName, const char* zeilenName, __int64 style);
        //! Fügt Styles hinzu, die bei dem Flag AuswahlMultistyled bei der
        //! Auswahl eines bestimmten Kästchens verwendte werden \param
        //! spaltenName Der Name der Spalte des Kästchens \param zeilenName Der
        //! Name der Zeile des Kästchens \param style der Style, der hinzugefügt
        //! werden soll
        DLLEXPORT void addMsStyle(
            Text* spaltenName, Text* zeilenName, __int64 style);
        //! Setzt die Styles, die bei dem Flag AuswahlMultistyled bei der
        //! Auswahl eines bestimmten Kästchens verwendte werden \param sNum Der
        //! Index der Spalte des Kästchens \param zNum Der Index der Zeile des
        //! Kästchens \param style der Style, der verwendet werden soll
        DLLEXPORT void setMsStyle(int sNum, int zNum, __int64 style);
        //! Setzt die Styles, die bei dem Flag AuswahlMultistyled bei der
        //! Auswahl eines bestimmten Kästchens verwendte werden \param
        //! spaltenName Der Name der Spalte des Kästchens \param zeilenName Der
        //! Name der Zeile des Kästchens \param style der Style, der verwendet
        //! werden soll
        DLLEXPORT void setMsStyle(
            const char* spaltenName, const char* zeilenName, __int64 style);
        //! Setzt die Styles, die bei dem Flag AuswahlMultistyled bei der
        //! Auswahl eines bestimmten Kästchens verwendte werden \param
        //! spaltenName Der Name der Spalte des Kästchens \param zeilenName Der
        //! Name der Zeile des Kästchens \param style der Style, der verwendet
        //! werden soll
        DLLEXPORT void setMsStyle(
            Text* spaltenName, Text* zeilenName, __int64 style);
        //! Setzt die Styles, die bei dem Flag AuswahlMultistyled bei der
        //! Auswahl eines bestimmten Kästchens verwendte werden \param sNum Der
        //! Index der Spalte des Kästchens \param zNum Der Index der Zeile des
        //! Kästchens \param style der Style, der verwendet werden soll
        //!  add_remove: 1, falls die übergebenen Styles hinzugefügt werden
        //!  sollen. 0, fals sie entfernt werden sollen
        DLLEXPORT void setMsStyle(
            int sNum, int zNum, __int64 style, bool add_remove);
        //! Setzt die Styles, die bei dem Flag AuswahlMultistyled bei der
        //! Auswahl eines bestimmten Kästchens verwendte werden \param
        //! spaltenName Der Name der Spalte des Kästchens \param zeilenName Der
        //! Name der Zeile des Kästchens \param style der Style, der verwendet
        //! werden soll
        //!  add_remove: 1, falls die übergebenen Styles hinzugefügt werden
        //!  sollen. 0, fals sie entfernt werden sollen
        DLLEXPORT void setMsStyle(const char* spaltenName,
            const char* zeilenName,
            __int64 style,
            bool add_remove);
        //! Setzt die Styles, die bei dem Flag AuswahlMultistyled bei der
        //! Auswahl eines bestimmten Kästchens verwendte werden \param
        //! spaltenName Der Name der Spalte des Kästchens \param zeilenName Der
        //! Name der Zeile des Kästchens \param style der Style, der verwendet
        //! werden soll
        //!  add_remove: 1, falls die übergebenen Styles hinzugefügt werden
        //!  sollen. 0, fals sie entfernt werden sollen
        DLLEXPORT void setMsStyle(Text* spaltenName,
            Text* zeilenName,
            __int64 style,
            bool add_remove);
        //! Entfernt Styles von den Styles, die bei dem Flag AuswahlMultistyled
        //! bei der Auswahl eines bestimmten Kästchens verwendte werden \param
        //! sNum Der Index der Spalte des Kästchens \param zNum Der Index der
        //! Zeile des Kästchens \param style der Style, der entfernt werden soll
        DLLEXPORT void removeMsStyle(int sNum, int zNum, __int64 style);
        //! Entfernt Styles von den Styles, die bei dem Flag AuswahlMultistyled
        //! bei der Auswahl eines bestimmten Kästchens verwendte werden \param
        //! spaltenName Der Name der Spalte des Kästchens \param zeilenName Der
        //! Name der Zeile des Kästchens \param style der Style, der entfernt
        //! werden soll
        DLLEXPORT void removeMsStyle(
            const char* spaltenName, const char* zeilenName, __int64 style);
        //! Entfernt Styles von den Styles, die bei dem Flag AuswahlMultistyled
        //! bei der Auswahl eines bestimmten Kästchens verwendte werden \param
        //! spaltenName Der Name der Spalte des Kästchens \param zeilenName Der
        //! Name der Zeile des Kästchens \param style der Style, der entfernt
        //! werden soll
        DLLEXPORT void removeMsStyle(
            Text* spaltenName, Text* zeilenName, __int64 style);
        //! Aktualisiert das Objekt. Wird vom Framework aufgerufen
        //! \param tickVal Die Zeit in sekunden, die seit dem lezten Aufruf
        //! dieser Funktion vergangen ist \return 1, wenn sich etwas verändert
        //! hat und das Bild neu gezeichnet werden muss. 0 sonst
        DLLEXPORT bool tick(double tickVal) override;
        //! Verarbeitet Tastatur Nachrichten
        //! \param me Das Ereignis, was durch die Tastatureingabe ausgelößt
        //! wurde
        DLLEXPORT void doTastaturEreignis(TastaturEreignis& te) override;
        //! Zeichnet das Objekt nach zRObj, falls er sichtbar ist
        //! \param zRObj Das Bild, in welches gezeichnet werden soll
        DLLEXPORT void render(Bild& zRObj) override;
        //! Gibt die Anzahl der Spalten zurück
        DLLEXPORT int getSpaltenAnzahl() const;
        //! Gibt die Anzahl der Zeilen zurück
        DLLEXPORT int getZeilenAnzahl() const;
        //! Gibt den Index einer Spalte zurück
        //! \param name Der Name der Spalte
        DLLEXPORT int getSpaltenNummer(const char* name) const;
        //! Gibt den Index einer Spalte zurück
        //! \param name Der Name der Spalte
        DLLEXPORT int getSpaltenNummer(Text* name) const;
        //! Gibt den Namen einer Spalte zurück
        //! \param num Der Index der Splate
        DLLEXPORT Text* getSpaltenName(int num) const;
        //! Gibt den Namen einer Spalte ohne erhöhten reference Counter zurück
        //! \param num Der Index der Splate
        DLLEXPORT Text* zSpaltenName(int num) const;
        //! Gibt den Index einer Zeile zurück
        //! \param name Der Name der Zeile
        DLLEXPORT int getZeilenNummer(const char* name) const;
        //! Gibt den Index einer Zeile zurück
        //! \param name Der Name der Zeile
        DLLEXPORT int getZeilenNummer(Text* name) const;
        //! Gibt den Namen einer Zeile zurück
        //! \param num Der Index der Zeile
        DLLEXPORT Text* getZeilenName(int num) const;
        //! Gibt den Namen einer Zeile ohne erhöhten Reference Counter zurück
        //! \param num Der Index der Zeile
        DLLEXPORT Text* zZeilenName(int num) const;
        //! Sucht eine Zeichnung in der Tabelle und gibt den Index der Spalte
        //! als x und den der Zeile als y zurück. (-1, -1) falls das Objekt
        //! nicht gefunden wurde \param zObj Die Zeichnung (ohne erhöhten
        //! reference Counter)
        DLLEXPORT Punkt getZeichnungPosition(Zeichnung* zObj) const;
        //! Gibt die Zeichnung zurück, die in einem bestimmten Kästchen der
        //! Tabelle ist (ohne erhöhten reference Counter) \param sNum Der Index
        //! der Spalte \param zNum Der Index der Zeile
        DLLEXPORT Zeichnung* zZeichnung(int sNum, int zNum) const;
        //! Gibt die Zeichnung zurück, die in einem bestimmten Kästchen der
        //! Tabelle ist (ohne erhöhten reference Counter) \param spaltenName Der
        //! Name der Spalte des Kästchens \param zeilenName Der Name der Zeile
        //! des Kästchens
        DLLEXPORT Zeichnung* zZeichnung(
            const char* spaltenName, const char* zeilenName) const;
        //! Gibt die Zeichnung zurück, die in einem bestimmten Kästchen der
        //! Tabelle ist (ohne erhöhten reference Counter) \param spaltenName Der
        //! Name der Spalte des Kästchens \param zeilenName Der Name der Zeile
        //! des Kästchens
        DLLEXPORT Zeichnung* zZeichnung(
            Text* spaltenName, Text* zeilenName) const;
        //! Gibt die Zeichnung zurück, die in einem bestimmten Kästchen der
        //! Tabelle ist \param sNum Der Index der Spalte \param zNum Der Index
        //! der Zeile
        DLLEXPORT Zeichnung* getZeichnung(int sNum, int zNum) const;
        //! Gibt die Zeichnung zurück, die in einem bestimmten Kästchen der
        //! Tabelle ist \param spaltenName Der Name der Spalte des Kästchens
        //! \param zeilenName Der Name der Zeile des Kästchens
        DLLEXPORT Zeichnung* getZeichnung(
            const char* spaltenName, const char* zeilenName) const;
        //! Gibt die Zeichnung zurück, die in einem bestimmten Kästchen der
        //! Tabelle ist \param spaltenName Der Name der Spalte des Kästchens
        //! \param zeilenName Der Name der Zeile des Kästchens
        DLLEXPORT Zeichnung* getZeichnung(
            Text* spaltenName, Text* zeilenName) const;
        //! Gibt die Breite einer Spalte in Pixeln zurück
        //! \param num Der Index der Spalte
        DLLEXPORT int getSpaltenBreite(int num) const;
        //! Gibt die Breite einer Spalte in Pixeln zurück
        //! \param name Der Name der Spalte
        DLLEXPORT int getSpaltenBreite(const char* name) const;
        //! Gibt die Breite einer Spalte in Pixeln zurück
        //! \param name Der Name der Spalte
        DLLEXPORT int getSpaltenBreite(Text* name) const;
        //! Gibt die Höhe einer Zeile in Pixeln zurück
        //! \param num Der Index der Zeile
        DLLEXPORT int getZeilenHeight(int num) const;
        //! Gibt die Höhe einer Zeile in Pixeln zurück
        //! \param name Der Name der Zeile
        DLLEXPORT int getZeilenHeight(const char* name) const;
        //! Gibt die Höhe einer Zeile in Pixeln zurück
        //! \param name Der Name der Zeile
        DLLEXPORT int getZeilenHeight(Text* name) const;
        //! Gibt die minimale Spalten breite in Pixeln zurück
        //! \param num Der Index der Spalte
        DLLEXPORT int getMinSpaltenBreite(int num) const;
        //! Gibt die minimale Spalten breite in Pixeln zurück
        //! \param name Der Name der Spalte
        DLLEXPORT int getMinSpaltenBreite(const char* name) const;
        //! Gibt die minimale Spalten breite in Pixeln zurück
        //! \param name Der Name der Spalte
        DLLEXPORT int getMinSpaltenBreite(Text* name) const;
        //! Gibt die maximale Spalten breite in Pixeln zurück
        //! \param num Der Index der Spalte
        DLLEXPORT int getMaxSpaltenBreite(int num) const;
        //! Gibt die maximale Spalten breite in Pixeln zurück
        //! \param name Der Name der Spalte
        DLLEXPORT int getMaxSpaltenBreite(const char* name) const;
        //! Gibt die maximale Spalten breite in Pixeln zurück
        //! \param name Der Name der Spalte
        DLLEXPORT int getMaxSpaltenBreite(Text* name) const;
        //! Gibt die minimale Zeilen Höhe in Pixeln zurück
        //! \param num Der Index der Zeile
        DLLEXPORT int getMinZeilenHeight(int num) const;
        //! Gibt die minimale Zeilen Höhe in Pixeln zurück
        //! \param name Der Name der Zeile
        DLLEXPORT int getMinZeilenHeight(const char* name) const;
        //! Gibt die minimale Zeilen Höhe in Pixeln zurück
        //! \param name Der Name der Zeile
        DLLEXPORT int getMinZeilenHeight(Text* name) const;
        //! Gibt die maximale Zeilen Höhe in Pixeln zurück
        //! \param num Der Index der Zeile
        DLLEXPORT int getMaxZeilenHeight(int num) const;
        //! Gibt die maximale Zeilen Höhe in Pixeln zurück
        //! \param name Der Name der Zeile
        DLLEXPORT int getMaxZeilenHeight(const char* name) const;
        //! Gibt die maximale Zeilen Höhe in Pixeln zurück
        //! \param name Der Name der Zeile
        DLLEXPORT int getMaxZeilenHeight(Text* name) const;
        //! Gibt den index der Splate zurück, auf die die Maus zeigt
        //! \param mx Die x Koordinate der Mausposition basierend zum linken
        //! Rand der Tabelle in Pixeln
        DLLEXPORT double getMausSpalte(int mx) const;
        //! Gibt den Namen der Splate zurück, auf die die Maus zeigt
        //! \param mx Die x Koordinate der Mausposition basierend zum linken
        //! Rand der Tabelle in Pixeln
        DLLEXPORT Text* getMausSpaltenName(int mx) const;
        //! Gibt den Namen der Splate ohne erhöhten Reference Counter zurück,
        //! auf die die Maus zeigt \param mx Die x Koordinate der Mausposition
        //! basierend zum linken Rand der Tabelle in Pixeln
        DLLEXPORT Text* zMausSpaltenName(int mx) const;
        //! Gibt den index der Zeile zurück, auf die die Maus zeigt
        //! \param my Die Y Koordinate der Mausposition basierend zum oberen
        //! Rand der Tabelle in Pixeln
        DLLEXPORT double getMausZeile(int my) const;
        //! Gibt den Namen der Zeile zurück, auf die die Maus zeigt
        //! \param my Die Y Koordinate der Mausposition basierend zum oberen
        //! Rand der Tabelle in Pixeln
        DLLEXPORT Text* getMausZeilenName(int my) const;
        //! Gibt den Namen der Zeile ohne erhöhten Reference Counter zurück, auf
        //! die die Maus zeigt \param my Die Y Koordinate der Mausposition
        //! basierend zum oberen Rand der Tabelle in Pixeln
        DLLEXPORT Text* zMausZeilenName(int my) const;
        //! Gibt den Index der Spalte als x und den der Zeile als y des
        //! ausgewählten Feldes zurück
        DLLEXPORT const Punkt& getAuswahlPosition() const;
        //! Gibt die Farbe des Rasters im A8R8G8B8 Format zurück
        DLLEXPORT int getRasterFarbe() const;
        //! Gibt die Breite des Rasters in Pixeln zurück
        DLLEXPORT int getRasterBreite() const;
        //! Gibt einen Zeiger auf den Rahmen zurück, der bei dem ausgewählten
        //! Feld verwendet wird
        DLLEXPORT Rahmen* getARahmen() const;
        //! Gibt einen Zeiger auf den Rahmen ohne erhöhten Reference Counter
        //! zurück, der bei dem ausgewählten Feld verwendet wird
        DLLEXPORT Rahmen* zARahmen() const;
        //! Gibt einen Zeiger auf den Farbübergang zurück, der bei dem
        //! ausgewählten Feld verwendet wird
        DLLEXPORT AlphaFeld* getAAlphaFeld() const;
        //! Gibt einen Zeiger auf den Farbübergang ohne erhöhten Reference
        //! Counter zurück, der bei dem ausgewählten Feld verwendet wird
        DLLEXPORT AlphaFeld* zAAlphaFeld() const;
        //! Gibt einen Zeiger auf den Rahmen zurück, der bei dem Flag
        //! AuswahlMultistyled bei der auswahl eines bestimmten Kästchens
        //! verwendet wird \param sNum Der Index der Spalte \param zNum Der
        //! Index der Zeile
        DLLEXPORT Rahmen* getARahmen(int sNum, int zNum) const;
        //! Gibt einen Zeiger auf den Rahmen ohne erhöhten Reference Couner
        //! zurück, der bei dem Flag AuswahlMultistyled bei der auswahl eines
        //! bestimmten Kästchens verwendet wird \param sNum Der Index der Spalte
        //! \param zNum Der Index der Zeile
        DLLEXPORT Rahmen* zARahmen(int sNum, int zNum) const;
        //! Gibt einen Zeiger auf den Farbübergang zurück, der bei dem Flag
        //! AuswahlMultistyled bei der auswahl eines bestimmten Kästchens
        //! verwendet wird \param sNum Der Index der Spalte \param zNum Der
        //! Index der Zeile
        DLLEXPORT AlphaFeld* getAAlphaFeld(int sNum, int zNum) const;
        //! Gibt einen Zeiger auf den Farbübergang ohne erhöhten Reference
        //! Couner zurück, der bei dem Flag AuswahlMultistyled bei der auswahl
        //! eines bestimmten Kästchens verwendet wird \param sNum Der Index der
        //! Spalte \param zNum Der Index der Zeile
        DLLEXPORT AlphaFeld* zAAlphaFeld(int sNum, int zNum) const;
        //! Gibt einen Zeiger auf den Rahmen zurück, der bei dem Flag
        //! AuswahlMultistyled bei der auswahl eines bestimmten Kästchens
        //! verwendet wird \param spaltenName Der Name der Spalte \param
        //! zeilenName Der Name der Zeile
        DLLEXPORT Rahmen* getARahmen(
            const char* spaltenName, const char* zeilenName) const;
        //! Gibt einen Zeiger auf den Rahmen ohne erhöhten Reference Coune
        //! zurück, der bei dem Flag AuswahlMultistyled bei der auswahl eines
        //! bestimmten Kästchens verwendet wird \param spaltenName Der Name der
        //! Spalte \param zeilenName Der Name der Zeile
        DLLEXPORT Rahmen* zARahmen(
            const char* spaltenName, const char* zeilenName) const;
        //! Gibt einen Zeiger auf den Farbübergang zurück, der bei dem Flag
        //! AuswahlMultistyled bei der auswahl eines bestimmten Kästchens
        //! verwendet wird \param spaltenName Der Name der Spalte \param
        //! zeilenName Der Name der Zeile
        DLLEXPORT AlphaFeld* getAAlphaFeld(
            const char* spaltenName, const char* zeilenName) const;
        //! Gibt einen Zeiger auf den Farbübergang ohne erhöhten Reference Coune
        //! zurück, der bei dem Flag AuswahlMultistyled bei der auswahl eines
        //! bestimmten Kästchens verwendet wird \param spaltenName Der Name der
        //! Spalte \param zeilenName Der Name der Zeile
        DLLEXPORT AlphaFeld* zAAlphaFeld(
            const char* spaltenName, const char* zeilenName) const;
        //! Gibt einen Zeiger auf den Rahmen zurück, der bei dem Flag
        //! AuswahlMultistyled bei der auswahl eines bestimmten Kästchens
        //! verwendet wird \param spaltenName Der Name der Spalte \param
        //! zeilenName Der Name der Zeile
        DLLEXPORT Rahmen* getARahmen(Text* spaltenName, Text* zeilenName) const;
        //! Gibt einen Zeiger auf den Rahmen ohne erhöhten Reference Coune
        //! zurück, der bei dem Flag AuswahlMultistyled bei der auswahl eines
        //! bestimmten Kästchens verwendet wird \param spaltenName Der Name der
        //! Spalte \param zeilenName Der Name der Zeile
        DLLEXPORT Rahmen* zARahmen(Text* spaltenName, Text* zeilenName) const;
        //! Gibt einen Zeiger auf den Farbübergang zurück, der bei dem Flag
        //! AuswahlMultistyled bei der auswahl eines bestimmten Kästchens
        //! verwendet wird \param spaltenName Der Name der Spalte \param
        //! zeilenName Der Name der Zeile
        DLLEXPORT AlphaFeld* getAAlphaFeld(
            Text* spaltenName, Text* zeilenName) const;
        //! Gibt einen Zeiger auf den Farbübergang ohne erhöhten Reference Coune
        //! zurück, der bei dem Flag AuswahlMultistyled bei der auswahl eines
        //! bestimmten Kästchens verwendet wird \param spaltenName Der Name der
        //! Spalte \param zeilenName Der Name der Zeile
        DLLEXPORT AlphaFeld* zAAlphaFeld(
            Text* spaltenName, Text* zeilenName) const;
        //! Prüft ob bei dem Flag AuswahlMultistyled für ein bestimmtes Kästchen
        //! ein bestimmter Style gesetzt ist \param sNum Der Index der Spalte
        //! \param zNum Der Index der Zeile
        //! \param style Der Style, der gepfüft werden soll
        DLLEXPORT inline bool hatMsStyle(
            int sNum, int zNum, __int64 style) const;
        //! Prüft ob bei dem Flag AuswahlMultistyled für ein bestimmtes Kästchen
        //! ein bestimmter Style nicht gesetzt ist \param sNum Der Index der
        //! Spalte \param zNum Der Index der Zeile \param style Der Style, der
        //! gepfüft werden soll
        DLLEXPORT inline bool hatMsStyleNicht(
            int sNum, int zNum, __int64 style) const;
        //! Prüft ob bei dem Flag AuswahlMultistyled für ein bestimmtes Kästchen
        //! ein bestimmter Style gesetzt ist \param spaltenName Der Name der
        //! Spalte \param zeilenName Der Name der Zeile \param style Der Style,
        //! der gepfüft werden soll
        DLLEXPORT inline bool hatMsStyle(const char* spaltenName,
            const char* zeilenName,
            __int64 style) const;
        //! Prüft ob bei dem Flag AuswahlMultistyled für ein bestimmtes Kästchen
        //! ein bestimmter Style nicht gesetzt ist \param spaltenName Der Name
        //! der Spalte \param zeilenName Der Name der Zeile \param style Der
        //! Style, der gepfüft werden soll
        DLLEXPORT inline bool hatMsStyleNicht(const char* spaltenName,
            const char* zeilenName,
            __int64 style) const;
        //! Prüft ob bei dem Flag AuswahlMultistyled für ein bestimmtes Kästchen
        //! ein bestimmter Style gesetzt ist \param spaltenName Der Name der
        //! Spalte \param zeilenName Der Name der Zeile \param style Der Style,
        //! der gepfüft werden soll
        DLLEXPORT inline bool hatMsStyle(
            Text* spaltenName, Text* zeilenName, __int64 style) const;
        //! Prüft ob bei dem Flag AuswahlMultistyled für ein bestimmtes Kästchen
        //! ein bestimmter Style nicht gesetzt ist \param spaltenName Der Name
        //! der Spalte \param zeilenName Der Name der Zeile \param style Der
        //! Style, der gepfüft werden soll
        DLLEXPORT inline bool hatMsStyleNicht(
            Text* spaltenName, Text* zeilenName, __int64 style) const;
        //! Erzeugt eine Kopie der Tabelle, die ohne auswirkungen auf das
        //! Original verändert werden kann
        DLLEXPORT Zeichnung* dublizieren() const override;
    };
} // namespace Framework
#endif