示例#1
0
        bool ЗаполнитьДеревоНаЭкране()
        {
            var Остатки = from Строка in ПолноеДерево
                          where Строка.КоличествоВычерк == 0 && (Строка.КоличествоСобрано < Строка.КоличествоТребуется || Строка.КоличествоТребуется == 0)
                          orderby Строка.Адрес, Строка.ЭтоКорень descending
            select Строка;
            bool          ЕстьЗаполнение       = false;
            TreeNode      КореньАдресНаЭкране  = null;
            ЭлементДерева КореньВПолнойТаблице = null;

            foreach (var Строка in Остатки)
            {
                if (Строка.ЭтоКорень)
                {
                    КореньВПолнойТаблице = Строка;
                    ДобавитьАдрес(ref КореньАдресНаЭкране, Строка);
                    continue;
                }

                if (КореньАдресНаЭкране != null && КореньВПолнойТаблице != null)
                {
                    ДобавитьТовар(КореньАдресНаЭкране, Строка);
                    ЕстьЗаполнение = true;
                    continue;
                }
            }
            if (КореньАдресНаЭкране != null)
            {
                Дерево.Nodes.Add(КореньАдресНаЭкране);
            }
            return(ЕстьЗаполнение);
        }
示例#2
0
        private void ДобавитьАдрес(ref TreeNode КореньАдресНаЭкране, ЭлементДерева Строка)
        {
            if (КореньАдресНаЭкране != null)
            {
                if (КореньАдресНаЭкране.Nodes.Count > 0)
                {
                    Дерево.Nodes.Add(КореньАдресНаЭкране);
                }
                else
                {
                    return;
                }
            }
            КореньАдресНаЭкране = new TreeNode(Строка.Адрес);

            if (ТекущийАдрес == Строка.Адрес)
            {
                КореньАдресНаЭкране.Expand();
            }
            else
            {
                КореньАдресНаЭкране.Collapse();
            }
            КореньАдресНаЭкране.Tag  = Строка.EAN;
            КореньАдресНаЭкране.Text = Строка.ПолучитьТекстЭлемента();
            Строка.Ветвь             = КореньАдресНаЭкране;
        }
示例#3
0
        private ЭлементДерева  аскрытьАдрес(ЭлементДерева Элемент)
        {
            Дерево.CollapseAll();
            ТекущийАдрес = Элемент.Адрес;

            Элемент.Ветвь.Expand();

            return(Элемент);
        }
示例#4
0
        private TreeNode ДобавитьТовар(TreeNode КореньАдрес, ЭлементДерева Строка)
        {
            TreeNode СтрокаСТоваром = new TreeNode(Строка.ПолучитьТекстЭлемента());

            СтрокаСТоваром.Tag  = Строка.GUID;
            СтрокаСТоваром.Text = Строка.ПолучитьТекстЭлемента();
            КореньАдрес.Nodes.Add(СтрокаСТоваром);
            Строка.Ветвь = СтрокаСТоваром;
            return(СтрокаСТоваром);
        }
示例#5
0
        private void УдалитьНаЭкране(ЭлементДерева Элемент)
        {
            if (Элемент.Ветвь != null)
            {
                Элемент.Ветвь.Remove();
            }

            Элемент.Ветвь = null;
            Дерево.Update();
        }
示例#6
0
        private static void ЗаполнитьОстальныеEAN(string[] Строка, ЭлементДерева Элемент)
        {
            int Строк = Строка.Count();

            if (Строк > 9)
            {
                Элемент.EANs = new string[Строк - 9];
                for (int i = 9; i < Строк; i++)
                {
                    Элемент.EANs[i - 9] = Строка[i];
                }
            }
        }
示例#7
0
        private ЭлементДерева ОбработатьЭлементДерева(ЭлементДерева Элемент)
        {
            Дерево.SelectedNode = Элемент.Ветвь;
            if (Элемент.ЭтоКорень)
            {
                return(аскрытьАдрес(Элемент));
            }
            Элемент.СекундПодбора += ВзятьВремя();
            Элемент.КоличествоСобрано++;
            ОбработатьКоличествоЭлемента(Элемент);

            return(Элемент);
        }
示例#8
0
        private TreeNode ДобавитьТовар(TreeNode КореньАдрес, TreeNode ВыбранаСтрока, ЭлементДерева Корень, string[] Строка)
        {
            int      Строк          = Строка.Count();
            TreeNode СтрокаСТоваром = new TreeNode(Строка[0]);

            if (Строк > 2 && Строка[2] == "Выбрать")
            {
                ВыбранаСтрока = СтрокаСТоваром;
            }
            СтрокаСТоваром.Tag  = Строка[1];
            СтрокаСТоваром.Text = Строка[0];
            КореньАдрес.Nodes.Add(СтрокаСТоваром);
            return(ВыбранаСтрока);
        }
示例#9
0
        private bool ЕстьДругиеEAN(ЭлементДерева Строка, string EAN)
        {
            if (Строка.EANs == null)
            {
                return(false);
            }
            var ДругиеEAN = (from string EAN1 in Строка.EANs where EAN1 == EAN select Строка).FirstOrDefault();

            if (ДругиеEAN == null)
            {
                return(false);
            }
            return(true);
        }
示例#10
0
        private void ЗаполнитьПолноеДерево_ВПамяти()
        {
            Дерево.Focus();
            Дерево.Nodes.Clear();
            TreeNode      КореньАдрес   = null;
            ЭлементДерева ВыбранаСтрока = null;
            ЭлементДерева Корень        = null;

            ПолноеДерево.Clear();
            Дерево.CollapseAll();
            foreach (var Строка in Последовательность.ОтветСервера)
            {
                if (Строка[0] == "ЗавершитьЗагрузкуДанных")
                {
                    break;
                }
                if (Строка[0] == "ДобавитьКорень")
                {
                    Корень = new ЭлементДерева(КореньАдрес, Строка[1], Строка[2]);
                    ПолноеДерево.Add(Корень);
                    if ((Строка.Count() == 4 && Строка[3] == "Раскрыть"))
                    {
                        ТекущийАдрес = Строка[1];
                    }

                    continue;
                }

                if (Корень != null)
                {
                    //root , СтрокаСТоваром, Адрес,   EAN , "" ,   GUID,       Код,        Наименование,int КоличествоСобрано,int КоличествоТребуется, int КоличествоОстаток,
                    ЭлементДерева Элемент = new ЭлементДерева(false, null, Корень.Адрес, Строка[0], Строка[1], Строка[2], Строка[3], Строка[4], Строка[5], Строка[6], Строка[7]);
                    if (Строка.Count() > 8 && Строка[8] == "Выбрать")
                    {
                        ВыбранаСтрока = Элемент;
                    }
                    ЗаполнитьОстальныеEAN(Строка, Элемент);
                    ПолноеДерево.Add(Элемент);
                    continue;
                }
            }

            ЗаполнитьДеревоНаЭкране();

            if (ВыбранаСтрока != null)
            {
                Дерево.SelectedNode = ВыбранаСтрока.Ветвь;
            }
        }
示例#11
0
        private void ДобавитьАдрес(ref TreeNode КореньАдрес, ref ЭлементДерева Корень, string[] Строка)
        {
            if (КореньАдрес != null)
            {
                Дерево.Nodes.Add(КореньАдрес);
            }
            КореньАдрес = new TreeNode(Строка[1]);

            if ((Строка.Count() == 4 && Строка[3] == "Раскрыть") || ТекущийАдрес == Строка[1])
            {
                ТекущийАдрес = Строка[1];
                КореньАдрес.Expand();
            }
            else
            {
                КореньАдрес.Collapse();
            }
            КореньАдрес.Tag  = Строка[2];
            КореньАдрес.Text = Строка[1];
        }
示例#12
0
        private void ОбработатьКоличествоЭлемента(ЭлементДерева Элемент)
        {
            if (Элемент.КоличествоСобрано == Элемент.КоличествоТребуется || Элемент.КоличествоВычерк > 0)
            {
                if (Элемент.Ветвь == null)
                {
                    return;                       //ветвь уже удалена! на экране её нет
                }
                var ВАдресеНаЭкране = Элемент.Ветвь.Parent;
                УдалитьНаЭкране(Элемент);

                if (ВАдресеНаЭкране.Nodes.Count == 0)//у ветки с адресом проверяем количество нодов-товаров
                {
                    УдалитьТекущийАдресНаЭкране();
                    ПроверитьЗаданиеИЗавершить();//а не завершили ли мы задание случаем
                    return;
                }
            }
            Элемент.ОбновитьТекстЭлемента();
        }
示例#13
0
        private void ЗаполнитьДерево()
        {
            Дерево.Focus();
            Дерево.Nodes.Clear();
            TreeNode      КореньАдрес   = null;
            TreeNode      ВыбранаСтрока = null;
            ЭлементДерева Корень        = null;

            Дерево.CollapseAll();
            foreach (var Строка in Последовательность.ОтветСервера)
            {
                if (Строка[0] == "ЗавершитьЗагрузкуДанных")
                {
                    break;
                }
                if (Строка[0] == "ДобавитьКорень")
                {
                    ДобавитьАдрес(ref КореньАдрес, ref Корень, Строка);
                    continue;
                }

                if (КореньАдрес != null)
                {
                    ВыбранаСтрока = ДобавитьТовар(КореньАдрес, ВыбранаСтрока, Корень, Строка);
                    continue;
                }
            }
            if (КореньАдрес != null)
            {
                Дерево.Nodes.Add(КореньАдрес);
            }
            if (ВыбранаСтрока != null)
            {
                Дерево.SelectedNode = ВыбранаСтрока;
            }
        }