/// <summary>
        /// Initialises the UserControl that has the Tabs for the currently selected Tab.
        /// </summary>
        private void InitChildUserControl(TPartnerEditScreenLogic.TModuleTabGroupEnum AModuleTabGroup)
        {
            switch (AModuleTabGroup)
            {
                case TPartnerEditScreenLogic.TModuleTabGroupEnum.mtgPartner:

                    if (!FInitialisedChildUCs.Contains(ucoPartnerTabSet.GetType().Name))
                    {
                        FInitialisedChildUCs.Add(ucoPartnerTabSet.GetType().Name);

                        this.ParentForm.Cursor = Cursors.WaitCursor;

                        ucoPartnerTabSet.PetraUtilsObject = FPetraUtilsObject;
                        ucoPartnerTabSet.PartnerEditUIConnector = FPartnerEditUIConnector;

                        if (!FInitialisedChildUCs.Contains(ucoPersonnelTabSet.GetType().Name))
                        {
                            ucoPartnerTabSet.InitiallySelectedTabPage = FInitiallySelectedTabPage;
                        }
                        else
                        {
                            ucoPartnerTabSet.InitiallySelectedTabPage = TPartnerEditTabPageEnum.petpAddresses;
                        }

                        ucoPartnerTabSet.MainDS = FMainDS;
                        ucoPartnerTabSet.SpecialInitUserControl();
                        ucoPartnerTabSet.HookupDataChange += new THookupDataChangeEventHandler(ucoPartnerTabSet_HookupDataChange);
                        ucoPartnerTabSet.HookupPartnerEditDataChange += new THookupPartnerEditDataChangeEventHandler(
                            ucoPartnerTabSet_HookupPartnerEditDataChange);

                        this.ParentForm.Cursor = Cursors.Default;
                    }

                    break;

                case TPartnerEditScreenLogic.TModuleTabGroupEnum.mtgPersonnel:

                    if (!FInitialisedChildUCs.Contains(ucoPersonnelTabSet.GetType().Name))
                    {
                        FInitialisedChildUCs.Add(ucoPersonnelTabSet.GetType().Name);

                        this.ParentForm.Cursor = Cursors.WaitCursor;

                        ucoPersonnelTabSet.PetraUtilsObject = FPetraUtilsObject;
                        ucoPersonnelTabSet.PartnerEditUIConnector = FPartnerEditUIConnector;

                        if (!FInitialisedChildUCs.Contains(ucoPartnerTabSet.GetType().Name))
                        {
                            ucoPersonnelTabSet.InitiallySelectedTabPage = FInitiallySelectedTabPage;
                        }
                        else
                        {
                            ucoPersonnelTabSet.InitiallySelectedTabPage = TPartnerEditTabPageEnum.petpPersonnelIndividualData;
                        }

                        ucoPersonnelTabSet.MainDS = FMainDS;
                        ucoPersonnelTabSet.SpecialInitUserControl();

                        this.ParentForm.Cursor = Cursors.Default;
                    }

                    break;
            }

            FCurrentModuleTabGroup = AModuleTabGroup;
        }
        /// <summary>
        /// Shows the UserControl that has the Tabs for the currently selected Tab. If needed, initialisation
        /// of the UserContol is done.
        /// </summary>
        public void ShowChildUserControl(TPartnerEditScreenLogic.TModuleTabGroupEnum AModuleTabGroup)
        {
            InitChildUserControl(AModuleTabGroup);

            switch (AModuleTabGroup)
            {
                case TPartnerEditScreenLogic.TModuleTabGroupEnum.mtgPartner:

                    ucoPartnerTabSet.Visible = true;
                    ucoPersonnelTabSet.Visible = false;
                    ucoPartnerTabSet.SelectTabPage(ucoPartnerTabSet.CurrentlySelectedTabPage); // make refresh happen

                    break;

                case TPartnerEditScreenLogic.TModuleTabGroupEnum.mtgPersonnel:

                    ucoPersonnelTabSet.Visible = true;
                    ucoPartnerTabSet.Visible = false;
                    ucoPersonnelTabSet.SelectTabPage(ucoPersonnelTabSet.CurrentlySelectedTabPage); // make refresh happen

                    break;
            }
        }
        /// <summary>
        /// Sets Module-related Toggle Buttons in ToolBar up
        /// </summary>
        /// <returns>void</returns>
        private void SetupAvailableModuleDataItems(Boolean AEnable, TPartnerEditScreenLogic.TModuleTabGroupEnum ALockOnModule)
        {
            Boolean IsEnabled = false;

            // TODO 2 oChristianK cSecurity : Take security settings into consideration.
            // Partner Module Data
            if ((ALockOnModule == TPartnerEditScreenLogic.TModuleTabGroupEnum.mtgNone)
                || (ALockOnModule == TPartnerEditScreenLogic.TModuleTabGroupEnum.mtgPartner))
            {
                if (ALockOnModule == TPartnerEditScreenLogic.TModuleTabGroupEnum.mtgPartner)
                {
                    IsEnabled = false;
                }
                else
                {
                    IsEnabled = AEnable;
                }

                if (FPartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.PERSON))
                {
                    tbbViewPartnerData.Enabled = IsEnabled;
                    mniViewPartnerData.Enabled = IsEnabled;

                    mniMaintainFamilyMembers.Enabled = IsEnabled;
                    mniMaintainGiftDestination.Enabled = IsEnabled;
                    mniMaintainFamilyMembers.Text = MPartnerResourcestrings.StrFamilyMenuItemText.Substring(0,
                        MPartnerResourcestrings.StrFamilyMenuItemText.Length - 3);   // remove trailing "..."
                    // TODO
//                    // Exchange the 'Family Members' icon with the 'Family' icon!
//                    this.XPMenuItemExtender.SetMenuGlyph(this.mniMaintainFamilyMembers, imlMenuHelper.Images[0]);
                }
                else if (FPartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.FAMILY))
                {
                    tbbViewPartnerData.Enabled = false;
                    mniViewPartnerData.Enabled = false;

                    mniMaintainFamilyMembers.Enabled = IsEnabled;
                    mniMaintainGiftDestination.Enabled = IsEnabled;
                    mniMaintainFamilyMembers.Text = MPartnerResourcestrings.StrFamilyMembersMenuItemText.Substring(0,
                        MPartnerResourcestrings.StrFamilyMembersMenuItemText.Length - 3);   // remove trailing "...";
                }
                else
                {
                    tbbViewPartnerData.Enabled = false;
                    mniViewPartnerData.Enabled = false;

                    // Following functionality is available only for PERSON and FAMILY
                    mniMaintainFamilyMembers.Enabled = false;
                    mniMaintainGiftDestination.Enabled = false;
                }

                mniMaintainAddresses.Enabled = IsEnabled;
                mniEditFindNewAddress.Enabled = IsEnabled;
                mniMaintainPartnerDetails.Enabled = IsEnabled;

                if (FFoundationDetailsEnabled)
                {
                    mniMaintainFoundationDetails.Enabled = IsEnabled;
                }

                mniMaintainSubscriptions.Enabled = IsEnabled;
                mniMaintainSpecialTypes.Enabled = IsEnabled;
                mniMaintainLocalPartnerData.Enabled = IsEnabled;
                mniMaintainInterests.Enabled = IsEnabled;
                mniMaintainReminders.Enabled = IsEnabled;
                mniMaintainRelationships.Enabled = IsEnabled;
                mniMaintainContacts.Enabled = IsEnabled;
                mniMaintainNotes.Enabled = IsEnabled;
                mniMaintainFinanceDetails.Enabled = IsEnabled;
            }
            else
            {
                tbbViewPartnerData.Enabled = (!IsEnabled);
                tbbViewPartnerData.Enabled = (!IsEnabled);
                mniMaintainAddresses.Enabled = (!IsEnabled);
                mniEditFindNewAddress.Enabled = (!IsEnabled);
                mniMaintainPartnerDetails.Enabled = (!IsEnabled);

                if (!FFoundationDetailsEnabled)
                {
                    mniMaintainFoundationDetails.Enabled = (!IsEnabled);
                }

                mniMaintainSubscriptions.Enabled = (!IsEnabled);
                mniMaintainSpecialTypes.Enabled = (!IsEnabled);
                mniMaintainLocalPartnerData.Enabled = (!IsEnabled);
                mniMaintainInterests.Enabled = (!IsEnabled);
                mniMaintainReminders.Enabled = (!IsEnabled);
                mniMaintainFamilyMembers.Enabled = (!IsEnabled);
                mniMaintainRelationships.Enabled = (!IsEnabled);
                mniMaintainContacts.Enabled = (!IsEnabled);
                mniMaintainNotes.Enabled = (!IsEnabled);
                mniMaintainGiftDestination.Enabled = (!IsEnabled);
                mniMaintainFinanceDetails.Enabled = (!IsEnabled);
            }

            // Personnel Module Data
            if ((ALockOnModule == TPartnerEditScreenLogic.TModuleTabGroupEnum.mtgNone)
                || (ALockOnModule == TPartnerEditScreenLogic.TModuleTabGroupEnum.mtgPersonnel))
            {
                if (FPartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.PERSON))
                {
                    if (UserHasPersonnelAccess())
                    {
                        tbbViewPersonnelData.Enabled = AEnable;
                        mniViewPersonnelData.Enabled = AEnable;
                        mniMaintainPersonnelData.Enabled = AEnable;
                    }
                    else
                    {
                        tbbViewPersonnelData.Enabled = false;
                        mniViewPersonnelData.Enabled = false;
                        mniMaintainPersonnelData.Enabled = false;
                    }

                    mniMaintainPersonnelData.Text = MPartnerResourcestrings.StrPersonnelPersonMenuItemText;
                }
                else if (FPartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.UNIT))
                {
                    mniMaintainPersonnelData.Enabled = AEnable;
                    tbbViewPersonnelData.Enabled = false;
                    mniViewPersonnelData.Enabled = false;

                    mniMaintainPersonnelData.Text = MPartnerResourcestrings.StrPersonnelUnitMenuItemText;
                }
                else
                {
                    tbbViewPersonnelData.Enabled = (!AEnable);
                    mniViewPersonnelData.Enabled = (!AEnable);
                    mniMaintainPersonnelData.Enabled = (!AEnable);
                }
            }
            else
            {
                tbbViewPersonnelData.Enabled = (!AEnable);
                mniViewPersonnelData.Enabled = (!AEnable);
                mniMaintainPersonnelData.Enabled = (!AEnable);
            }

            // Finance Module Data
            if (((ALockOnModule == TPartnerEditScreenLogic.TModuleTabGroupEnum.mtgNone)
                 || (ALockOnModule == TPartnerEditScreenLogic.TModuleTabGroupEnum.mtgFinance))
                && UserHasFinanceAccess())
            {
                //tbbViewFinanceData.Enabled = AEnable;   // This Tab Group is not functional yet
                //mniViewFinanceData.Enabled = AEnable;   // This Tab Group is not functional yet
                mniMaintainDonorHistory.Enabled = AEnable;
                mniMaintainRecipientHistory.Enabled = AEnable;

                // For the moment, we want all to stay disabled since they are not functional yet...
                // mniMaintainFinanceReports.Enabled := AEnable;
                // mniMaintainBankAccounts.Enabled := AEnable;
                // mniMaintainGiftReceipting.Enabled := AEnable;
            }
            else
            {
                //tbbViewFinanceData.Enabled = (!AEnable);    // This Tab Group is not functional yet
                //mniViewFinanceData.Enabled = (!AEnable);    // This Tab Group is not functional yet
                mniMaintainDonorHistory.Enabled = (!AEnable);
                mniMaintainRecipientHistory.Enabled = (!AEnable);

                // For the moment, we want all to stay disabled since they are not functional yet...
                // mniMaintainFinanceReports.Enabled := not AEnable;
                // mniMaintainBankAccounts.Enabled := not AEnable;
                // mniMaintainGiftReceipting.Enabled := not AEnable;
            }

            // For the moment, we want all to stay invisible since they are not functional yet...
            mniMaintainFinanceReports.Visible = false;
            mniMaintainBankAccounts.Visible = false;
            mniMaintainGiftReceipting.Visible = false;
        }