/// <summary>
        /// todoComment
        /// </summary>
        /// <param name="ADataTableValuePartner"></param>
        /// <param name="ADataTableValueApplication"></param>
        /// <param name="AOfficeSpecificDataLabelUse"></param>
        private void InitialiseUserControlInternal(PDataLabelValuePartnerTable ADataTableValuePartner,
            PDataLabelValueApplicationTable ADataTableValueApplication,
            TOfficeSpecificDataLabelUseEnum AOfficeSpecificDataLabelUse)
        {
            // Set the delegate function in the logic System.Object (so it can call back).
            // This can not be done in procedure InitializeDelegateGetPartnerShortName because FLogic
            // does not yet exist then.
            // Set up Data Sets and Tables
            InitialiseDataStructures(ADataTableValuePartner, ADataTableValueApplication);

            // Set up screen logic
            FOfficeSpecificDataLabelUse = AOfficeSpecificDataLabelUse;
            FLocalDataLabelValuesGrid = grdLocalDataLabelValues;

            //PossiblySomethingToSave += new TTellGuiToEnableSaveButton(this.@PossiblySaveSomething);

            // Set up Grid
            SetupGridColumnsAndRows();

            // Signalize that the initialisation is done
            FUserControlInitialised = true;
        }
        /// <summary>
        /// Initialises DataSets and Tables
        ///
        /// </summary>
        /// <returns>void</returns>
        private void InitialiseDataStructures(PDataLabelValuePartnerTable ADataTableValuePartner,
            PDataLabelValueApplicationTable ADataTableValueApplication)
        {
            FDataLabelDT = (PDataLabelTable)TDataCache.TMPartner.GetCacheablePartnerTable(TCacheablePartnerTablesEnum.DataLabelList);

            // FDataLabelDT.Tablename := 'PDataLabel';
            // MessageBox.Show('FDataLabelDT.Rows[0].Key: ' + FDataLabelDT.Row[0].Key.ToString);
            FDataLabelUseDT = (PDataLabelUseTable)TDataCache.TMPartner.GetCacheablePartnerTable(TCacheablePartnerTablesEnum.DataLabelUseList);

            // MessageBox.Show('FDataLabelUseDT.Rows[0].Key: ' + FDataLabelUseDT.Row[0].Idx1.ToString);
            FDataLabelLookupDT = (PDataLabelLookupTable)TDataCache.TMPartner.GetCacheablePartnerTable(TCacheablePartnerTablesEnum.DataLabelLookupList);

            // MessageBox.Show('FDataLabelLookupDT.Row[0].CategoryCode: ' + FDataLabelLookupDT.Row[0].CategoryCode);
            FDataLabelLookupCategoryDT = (PDataLabelLookupCategoryTable)TDataCache.TMPartner.GetCacheablePartnerTable(
                TCacheablePartnerTablesEnum.DataLabelLookupCategoryList);

            // MessageBox.Show('FDataLabelLookupCategoryDT.Row[0].CategoryCode: ' + FDataLabelLookupCategoryDT.Row[0].CategoryCode);
            // Set up DataSet that holds all DataTables
            FLocalDataDS = new OfficeSpecificDataLabelsTDS("OfficeSpecificData");

            // Merge in cached Typed DataTables (should be done differently in the future when TypedDataSet.Tables.Add works fine)
            FLocalDataDS.Merge(FDataLabelDT);
            FLocalDataDS.Merge(FDataLabelUseDT);
            FLocalDataDS.Merge(FDataLabelLookupDT);
            FLocalDataDS.Merge(FDataLabelLookupCategoryDT);
            FDataLabelValuePartnerDT = ADataTableValuePartner;
            FDataLabelValueApplicationDT = ADataTableValueApplication;
        }
        /// <summary>
        /// todoComment
        /// </summary>
        /// <param name="ADataTable"></param>
        /// <param name="APartnerKey"></param>
        /// <param name="AApplicationKey"></param>
        /// <param name="ARegistrationOffice"></param>
        /// <param name="AOfficeSpecificDataLabelUse"></param>
        public void InitialiseUserControlAndShowData(PDataLabelValueApplicationTable ADataTable,
            Int64 APartnerKey,
            Int32 AApplicationKey,
            Int64 ARegistrationOffice,
            TOfficeSpecificDataLabelUseEnum AOfficeSpecificDataLabelUse)
        {
            FPartnerKey = APartnerKey;
            FApplicationKey = AApplicationKey;
            FRegistrationOffice = ARegistrationOffice;

            if (!FUserControlInitialised)
            {
                InitialiseUserControlInternal(null, ADataTable, AOfficeSpecificDataLabelUse);
            }
        }