/// <summary>
        /// initialize (called by the constructor)
        /// </summary>
        public void InitializeManualCode()
        {
            FFormSetupFinished = false;

            ArrangeMenuItemsAndToolBarButtons();

            tbbEditPartner.Enabled = false;
            mniFileEditPartner.Enabled = false;

            // Initialise FRestrictToPartnerClasses Array
            FRestrictToPartnerClasses = new string[0];

            // Set status bar texts
            FPetraUtilsObject.SetStatusBarText(btnAccept,
                MPartnerResourcestrings.StrAcceptButtonHelpText + MPartnerResourcestrings.StrPartnerFindSearchTargetText);
            FPetraUtilsObject.SetStatusBarText(btnCancel,
                MPartnerResourcestrings.StrCancelButtonHelpText + MPartnerResourcestrings.StrPartnerFindSearchTargetText);

            // catch enter on all controls, to trigger search or accept (could use this.AcceptButton, but we have several search buttons etc)
            this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.CatchEnterKey);

            mniFile.DropDownOpening += new System.EventHandler(MniFile_DropDownOpening);
            mniEdit.DropDownOpening += new System.EventHandler(MniEdit_DropDownOpening);
            mniMaintain.DropDownOpening += new System.EventHandler(MniMaintain_DropDownOpening);
            mniMailing.DropDownOpening += new System.EventHandler(MniMailing_DropDownOpening);
            mniFileRecentPartners.DropDownOpening += new System.EventHandler(MniFileRecentPartner_DropDownOpening);

            ucoFindByPartnerDetails.PartnerAvailable += new TUC_PartnerFind_ByPartnerDetails.TPartnerAvailableChangeEventHandler(
                ucoFindByPartnerDetails_PartnerAvailable);
            ucoFindByPartnerDetails.SearchOperationStateChange += new TUC_PartnerFind_ByPartnerDetails.TSearchOperationStateChangeEventHandler(
                ucoFindByPartnerDetails_SearchOperationStateChange);
            ucoFindByPartnerDetails.PartnerInfoPaneCollapsed += new EventHandler(ucoFindByPartnerDetails_PartnerInfoPaneCollapsed);
            ucoFindByPartnerDetails.PartnerInfoPaneExpanded += new EventHandler(ucoFindByPartnerDetails_PartnerInfoPaneExpanded);
            ucoFindByPartnerDetails.EnableAcceptButton += new EventHandler(ucoFindByPartnerDetails_EnableAcceptButton);
            ucoFindByPartnerDetails.DisableAcceptButton += new EventHandler(ucoFindByPartnerDetails_DisableAcceptButton);

            ucoFindByPartnerDetails.SetupPartnerInfoPane();

            ucoFindByBankDetails.PartnerAvailable += new TUC_PartnerFind_ByPartnerDetails.TPartnerAvailableChangeEventHandler(
                ucoFindByPartnerDetails_PartnerAvailable);
            ucoFindByBankDetails.SearchOperationStateChange += new TUC_PartnerFind_ByPartnerDetails.TSearchOperationStateChangeEventHandler(
                ucoFindByPartnerDetails_SearchOperationStateChange);
            ucoFindByBankDetails.EnableAcceptButton += new EventHandler(ucoFindByPartnerDetails_EnableAcceptButton);
            ucoFindByBankDetails.DisableAcceptButton += new EventHandler(ucoFindByPartnerDetails_DisableAcceptButton);

            // FindByPartnerDetails tab is shown first
            FCurrentlySelectedTab = ucoFindByPartnerDetails;

            // add event which will populate the bank combo boxes when 'Find by bank details' tab is shown for the first time
            this.ucoFindByBankDetails.VisibleChanged += new EventHandler(TPartnerFindScreen_VisibleChanged);
        }
        // called when the selected tab is changed
        private void TabChanged(System.Object sender, System.EventArgs e)
        {
            FPetraUtilsObject.RestoreAdditionalWindowPositionProperties();

            // if FindByBankDetails tab is selected
            if (tpgFindBankDetails.Visible)
            {
                // disable PartnerInfo button in toolbar nad menu
                tbbPartnerInfo.Enabled = false;
                mniViewPartnerInfo.Enabled = false;

                FCurrentlySelectedTab = ucoFindByBankDetails;
            }
            else
            {
                tbbPartnerInfo.Enabled = true;
                mniViewPartnerInfo.Enabled = true;

                FCurrentlySelectedTab = ucoFindByPartnerDetails;
            }
        }
        /// <summary>
        /// Used for passing parameters to the screen before it is actually shown.
        /// </summary>
        /// <param name="ARestrictToPartnerClasses">Pass in one or several PartnerClasses
        /// (separated by comma) to restrict the choice in the 'Partner Class' criteria
        /// ComboBox, or empty String '' to not restrict to any Partner Class.
        /// </param>
        /// <param name="ABankDetailsTabOnly">True if this instance should only display the
        /// Find By Bank Details tab
        /// </param>
        /// <param name="ADefaultClass">Set a default partner class</param>
        /// <param name="AInitiallyFocusLocationKey">True to set the focus on the location key</param>
        /// <param name="APassedLocationKey">location key</param>
        public void SetParameters(String ARestrictToPartnerClasses,
            bool ABankDetailsTabOnly,
            TPartnerClass? ADefaultClass,
            Boolean AInitiallyFocusLocationKey,
            Int32 APassedLocationKey)
        {
            FInitiallyFocusLocationKey = AInitiallyFocusLocationKey;

            if ((ARestrictToPartnerClasses == null) || (ARestrictToPartnerClasses.Length == 0))
            {
                ucoFindByBankDetails.InitBankDetailsTab(FRestrictToPartnerClasses);

                if (ADefaultClass != null)
                {
                    ucoFindByBankDetails.SetDefaultPartnerClass(ADefaultClass);
                }

                if (!ABankDetailsTabOnly)
                {
                    ucoFindByPartnerDetails.Init(FInitiallyFocusLocationKey,
                        FRestrictToPartnerClasses,
                        APassedLocationKey);

                    if (ADefaultClass != null)
                    {
                        ucoFindByPartnerDetails.SetDefaultPartnerClass(ADefaultClass);
                    }
                }
                else
                {
                    tabPartnerFindMethods.Controls.Remove(this.tpgFindPartner);
                    tbbPartnerInfo.Visible = false;
                    FCurrentlySelectedTab = ucoFindByBankDetails;
                }

                return;
            }

            ARestrictToPartnerClasses = ARestrictToPartnerClasses.Replace("WORKER", "WORKER-FAM");

            // Split String into String Array
            FRestrictToPartnerClasses = ARestrictToPartnerClasses.Split(new Char[] { (',') });

            // Check entries of String Array
            if (FRestrictToPartnerClasses.Length == 1)
            {
                //
                // Only one entry
                //
                if (FRestrictToPartnerClasses[0] != "")
                {
                    if (FRestrictToPartnerClasses[0] != "WORKER-FAM")
                    {
                        //
                        // Set the title, with the first character of the word
                        // being upper-case, the rest lower-case.
                        //
                        this.Text = FRestrictToPartnerClasses[0].Substring(0, 1).ToUpper() +
                                    FRestrictToPartnerClasses[0].Substring(1).ToLower() + StrTitleLastPart;
                    }
                    else
                    {
                        this.Text = StrWorkerFamily + StrTitleLastPart;
                    }
                }
                else
                {
                    // If the one entry is empty string (''), show default title
                    this.Text = StrTitleFirstPart + StrTitleLastPart;
                }
            }
            else
            {
                /*
                 * When a "Recipient" button has been pressed to bring up this screen, the
                 * ARestrictToPartnerClasses is "WORKER-FAM,UNIT".  When we find this to be the
                 * case, put 'Recipient Find' in the title.
                 * NOTE: this isn't a very robust solution...
                 */
                if ((FRestrictToPartnerClasses[0].ToUpper() == "WORKER-FAM") && (FRestrictToPartnerClasses[1].ToUpper() == "UNIT"))
                {
                    this.Text = StrTitleRecipient + StrTitleLastPart;
                }
            }

            btnAccept.Enabled = false;

            ucoFindByBankDetails.InitBankDetailsTab(FRestrictToPartnerClasses);

            if (!ABankDetailsTabOnly)
            {
                ucoFindByPartnerDetails.Init(FInitiallyFocusLocationKey,
                    FRestrictToPartnerClasses,
                    APassedLocationKey);
            }
            else
            {
                tabPartnerFindMethods.Controls.Remove(this.tpgFindPartner);
                tbbPartnerInfo.Visible = false;
            }
        }