#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:
            //! Wenn dieser Flag gesetzt wird, so kann der
            //! Benutzer die Spalten mit der Maus vergr��ern
            //! und verkleinern
            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
            //! Nutzer trotz des Flags SpaltenBreite�nderbar
            //! die Spaltenbreite nicht kleiner machen als
            //! eine bestimmte Grenze
            static const __int64 SpaltenBreiteMin = 0x00004000;
            //! 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 SpaltenBreiteMax = 0x00008000;
            //! 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 ZeilenHeightMin = 0x00010000;
            //! 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 ZeilenHeightMax = 0x00020000;
            //! 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 SpaltenBeweglich = 0x00040000;
            //! 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 ZeilenBeweglich = 0x00800000;
            //! 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 AuswahlRahmen = 0x0080000;
            //! 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 AuswahlBuffer = 0x00100000;
            //! Wenn dieser Flag gesetzt ist, so kann jedes
            //! Feld andere Rahmen und AlphaFelder beim
            //! Ausw�hlen haben.
            static const __int64 AuswahlMultistyled = 0x00200000;
            //! Wenn dieser Flag gesetzt ist, so werden
            //! zwischen den Feldern Linien gezeichnet
            static const __int64 Raster = 0x00400000;

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

    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