public DBInterfaceItemBase CreateInstanceEx(Type type)
        {
            DBInterfaceItemBase dbItem = CreateInstance(type);

            TypeCurrent            = type;
            drbtnAddColletion.Text = string.Format("Добавить ({0})", dbItem.TypeName);
            treeExist.ExpandAll();
            return(dbItem);
        }
 /// <summary>
 /// Рекурсивный метод определения наивысшего родителя записи.
 /// </summary>
 private DBInterfaceItemBase GetTopParent(DBInterfaceItemBase dbItem, int level)
 {
     if (dbItem.Parent != null)
     {
         return(GetTopParent(dbItem.Parent, level + 1));
     }
     else
     {
         return(dbItem);
     }
 }
 /// <summary>
 /// Рекурсивный метод определения уровня положения записи.
 /// </summary>
 private int GetLevel(DBInterfaceItemBase dbItem, int level)
 {
     if (dbItem.Parent != null)
     {
         return(GetLevel(dbItem.Parent, level + 1));
     }
     else
     {
         return(level);
     }
 }
        /// <summary>
        /// Обработчик события на изменение свойств ItemBase.
        /// </summary>
        void ItemBase_PropertyChanged(object sender, EventArgs e)
        {
            DBInterfaceItemBase item = sender as DBInterfaceItemBase;

            if (item != null)
            {
                FieldName  = item.FieldName;
                Caption    = item.Caption;
                TypeName   = item.TypeName;
                ImageIndex = item.ImageIndex;
            }
        }
 public TableMemberInfo(string fieldName, Type propertyType = null, string typeName = "", string caption = "",
                        bool isXPCollection = false, DBInterfaceItemBase dbItem     = null, bool isUsed  = false)
     : this()
 {
     FieldName      = fieldName;
     PropertyType   = propertyType;
     TypeName       = typeName;
     Caption        = caption;
     IsXPCollection = isXPCollection;
     Item           = dbItem;
     IsUsed         = isUsed;
 }
        /// <summary>
        /// Автоматическое создание элемента коллекции.
        /// </summary>
        public DBInterfaceItemBase CreateInstance(TableMemberInfo tmInfo)
        {
            DBInterfaceItemBase item       = null;
            TableMemberInfo     infoParent = null;
            TableMemberInfo     infoSelect = null;

            int level = tmInfo.GetLevel();

            for (int i = 0; i < level; i++)
            {
                infoParent = tmInfo.GetParent(level - i);
                infoSelect = MemberExists.FindInfo(infoParent.Parent);
                if (MemberExists.FindInfo(infoParent) == null)
                {
                    item = DBInterface.CreateInstance(infoParent.PropertyType, infoParent, infoSelect, treeExist, MemberExists);
                }
            }

            return(item);
        }