/// <summary>
        /// Serienbrief-Vorlage speichern
        /// </summary>
        /// <param name="button"></param>
        private void createFormletter_Click(Button button)
        {
            // Liste aller anzuzeigenden Tabs
            List <SimpleTabItem> myTabList = new List <SimpleTabItem>();

            // Füge einen neuen Tab mit der zugehörigen Seite hinzu, die darin angezeigt werden soll
            KPage         filter    = new pFormletterFilterSelection();
            SimpleTabItem tabFilter = new SimpleTabItem(IniParser.GetSetting("FORMLETTER", "formletterReceiver"), filter);

            myTabList.Add(tabFilter);

            // Füge einen neuen Tab mit der zugehörigen Seite hinzu, die darin angezeigt werden soll
            KPage         text    = new pFormletterTextFields();
            SimpleTabItem tabText = new SimpleTabItem(IniParser.GetSetting("FORMLETTER", "formletterTextFields"), text);

            myTabList.Add(tabText);

            // Füge einen neuen Tab mit der zugehörigen Seite hinzu, die darin angezeigt werden soll
            KPage         file    = new pFormletterFileLinking();
            SimpleTabItem tabFile = new SimpleTabItem(IniParser.GetSetting("FORMLETTER", "formletterLinking"), file);

            myTabList.Add(tabFile);

            // Füge drei Buttons hinzu, damit der Speichern-Button unter jedem Tab gleich ist
            tabFilter.toolbar.addButton(IniParser.GetSetting("FORMLETTER", "formletterSave"), saveFormletterTemplate);
            tabFile.toolbar.addButton(IniParser.GetSetting("FORMLETTER", "formletterSave"), saveFormletterTemplate);
            tabText.toolbar.addButton(IniParser.GetSetting("FORMLETTER", "formletterSave"), saveFormletterTemplate);

            tabFilter.toolbar.addButton(IniParser.GetSetting("BUTTONS", "cancel"), cancelFormletterTemplate);
            tabFile.toolbar.addButton(IniParser.GetSetting("BUTTONS", "cancel"), cancelFormletterTemplate);
            tabText.toolbar.addButton(IniParser.GetSetting("BUTTONS", "cancel"), cancelFormletterTemplate);

            // Zeige die Tabs in einer SinglePage an
            SinglePage singlePage = new SinglePage(this, IniParser.GetSetting("FORMLETTER", "formletterNew"), myTabList);
        }
        /// <summary>
        /// Button-Klick-Funktion für "Serienbrief-Vorlage speichern"-Button
        /// </summary>
        /// <param name="senderButton">die Instanz des sendenden Buttons</param>
        private void saveFormletterTemplate(Button senderButton)
        {
            try
            {
                // When using tabs, you can retrieve a page instance included in a tab using this function, giving the page type
                pFormletterFilterSelection pageFilter = getPageFromTabs <pFormletterFilterSelection>();
                pFormletterFileLinking     pageFile   = getPageFromTabs <pFormletterFileLinking>();
                pFormletterTextFields      pageText   = getPageFromTabs <pFormletterTextFields>();

                // Prüfe ob alle Eingaben richtig sind
                if (pageFilter.allFilterSets.Count == 0)
                {
                    MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "noFilterSet"));
                    pageFilter.parentTabControl.SelectedIndex = 0;
                    return;
                }
                if (pageFile.lbFileName.Content.Equals(""))
                {
                    MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "noFormletter"));
                    pageFile.parentTabControl.SelectedIndex = 1;
                    return;
                }
                if (!pageFile.validateLinkings())
                {
                    MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "noAssignment"));
                    pageFile.parentTabControl.SelectedIndex = 1;
                    return;
                }
                if (!pageText.validateTextFields())
                {
                    MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "noTextField"));
                    pageText.parentTabControl.SelectedIndex = 2;
                    return;
                }

                // Hole alle Filter-Sets
                List <FilterSetModel> filterSets = pageFilter.allFilterSets;

                // Neues FormletterPatternModelDB (Serienbriefvorlage) anlegen
                string pName           = pageText.tbPatternName.Text;
                string saluationM      = pageText.tbSaluationM.Text;
                string saluationF      = pageText.tbSaluationF.Text;
                string saluationN      = pageText.tbSaluationN.Text;
                string filename        = pageFile.tbFileName.Text.Replace(System.IO.Directory.GetCurrentDirectory(), "%PROGRAMPATH%");
                string text            = "";
                int    frmltrPatternID = FormletterPattern.Add(pName, saluationM, saluationF, saluationN, filename, text);

                // Bearbeite alle FilterSets
                foreach (var set in filterSets)
                {
                    string name        = ""; // Für Filter-Sets leer, nur von Listen/Statistiken verwendet
                    string linking     = set.linkingType;
                    int    filterSetID = FilterSet.Add(name, linking, frmltrPatternID);

                    // Bearbeite alle Filter zu jedem Set
                    foreach (var filter in set.filterList)
                    {
                        string table     = filter.group.ToString();
                        string type      = filter.criterion.ToString();
                        string operation = filter.operation.ToString();
                        string value     = filter.value;
                        int    filterID  = Filter.Add(filterSetID, table, type, operation, value);
                    }
                }

                // Hole alle Spaltenzuordnungen
                List <FormletterColumnCsvDocumentAssignment> list = pageFile.getAssignments();

                // Schreibe Spaltenzuordnungen in die Datenbank
                foreach (var assignment in list)
                {
                    string csvColumn      = assignment.csv_col_name;
                    string databaseTable  = assignment.formletterTableAssignment.group.ToString();
                    string databaseColumn = assignment.formletterTableAssignment.field.ToString();
                    ColumnAssignment.Add(frmltrPatternID, csvColumn, databaseTable, databaseColumn);
                }

                //Leere Formular
                pageFilter.resetEverything();
                pageFile.resetEverything();
                pageText.resetEverything();

                KPage      pageFormletterAdmin = new KöTaf.WPFApplication.Views.Formletter.pFormletterAdministration();
                SinglePage singlePage          = new SinglePage(IniParser.GetSetting("FORMLETTER", "formletterAdmin"), pageFormletterAdmin);
            }
            catch
            {
                MessageBoxEnhanced.Error(IniParser.GetSetting("ERRORMSG", "formletterCreate"));
            }
        }
        /// <summary>
        /// Serienbrief-Vorlage speichern
        /// </summary>
        /// <param name="button"></param>
        private void createFormletter_Click(Button button)
        {
            // Liste aller anzuzeigenden Tabs
            List<SimpleTabItem> myTabList = new List<SimpleTabItem>();

            // Füge einen neuen Tab mit der zugehörigen Seite hinzu, die darin angezeigt werden soll
            KPage filter = new pFormletterFilterSelection();
            SimpleTabItem tabFilter = new SimpleTabItem(IniParser.GetSetting("FORMLETTER", "formletterReceiver"), filter);
            myTabList.Add(tabFilter);

            // Füge einen neuen Tab mit der zugehörigen Seite hinzu, die darin angezeigt werden soll
            KPage text = new pFormletterTextFields();
            SimpleTabItem tabText = new SimpleTabItem(IniParser.GetSetting("FORMLETTER", "formletterTextFields"), text);
            myTabList.Add(tabText);

            // Füge einen neuen Tab mit der zugehörigen Seite hinzu, die darin angezeigt werden soll
            KPage file = new pFormletterFileLinking();
            SimpleTabItem tabFile = new SimpleTabItem(IniParser.GetSetting("FORMLETTER", "formletterLinking"), file);
            myTabList.Add(tabFile);

            // Füge drei Buttons hinzu, damit der Speichern-Button unter jedem Tab gleich ist
            tabFilter.toolbar.addButton(IniParser.GetSetting("FORMLETTER", "formletterSave"), saveFormletterTemplate);
            tabFile.toolbar.addButton(IniParser.GetSetting("FORMLETTER", "formletterSave"), saveFormletterTemplate);
            tabText.toolbar.addButton(IniParser.GetSetting("FORMLETTER", "formletterSave"), saveFormletterTemplate);

            tabFilter.toolbar.addButton(IniParser.GetSetting("BUTTONS", "cancel"), cancelFormletterTemplate);
            tabFile.toolbar.addButton(IniParser.GetSetting("BUTTONS", "cancel"), cancelFormletterTemplate);
            tabText.toolbar.addButton(IniParser.GetSetting("BUTTONS", "cancel"), cancelFormletterTemplate);

            // Zeige die Tabs in einer SinglePage an
            SinglePage singlePage = new SinglePage(this, IniParser.GetSetting("FORMLETTER", "formletterNew"), myTabList);
        }