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(ЕстьЗаполнение); }
private void ДобавитьАдрес(ref TreeNode КореньАдресНаЭкране, ЭлементДерева Строка) { if (КореньАдресНаЭкране != null) { if (КореньАдресНаЭкране.Nodes.Count > 0) { Дерево.Nodes.Add(КореньАдресНаЭкране); } else { return; } } КореньАдресНаЭкране = new TreeNode(Строка.Адрес); if (ТекущийАдрес == Строка.Адрес) { КореньАдресНаЭкране.Expand(); } else { КореньАдресНаЭкране.Collapse(); } КореньАдресНаЭкране.Tag = Строка.EAN; КореньАдресНаЭкране.Text = Строка.ПолучитьТекстЭлемента(); Строка.Ветвь = КореньАдресНаЭкране; }
private ЭлементДерева аскрытьАдрес(ЭлементДерева Элемент) { Дерево.CollapseAll(); ТекущийАдрес = Элемент.Адрес; Элемент.Ветвь.Expand(); return(Элемент); }
private TreeNode ДобавитьТовар(TreeNode КореньАдрес, ЭлементДерева Строка) { TreeNode СтрокаСТоваром = new TreeNode(Строка.ПолучитьТекстЭлемента()); СтрокаСТоваром.Tag = Строка.GUID; СтрокаСТоваром.Text = Строка.ПолучитьТекстЭлемента(); КореньАдрес.Nodes.Add(СтрокаСТоваром); Строка.Ветвь = СтрокаСТоваром; return(СтрокаСТоваром); }
private void УдалитьНаЭкране(ЭлементДерева Элемент) { if (Элемент.Ветвь != null) { Элемент.Ветвь.Remove(); } Элемент.Ветвь = null; Дерево.Update(); }
private static void ЗаполнитьОстальныеEAN(string[] Строка, ЭлементДерева Элемент) { int Строк = Строка.Count(); if (Строк > 9) { Элемент.EANs = new string[Строк - 9]; for (int i = 9; i < Строк; i++) { Элемент.EANs[i - 9] = Строка[i]; } } }
private ЭлементДерева ОбработатьЭлементДерева(ЭлементДерева Элемент) { Дерево.SelectedNode = Элемент.Ветвь; if (Элемент.ЭтоКорень) { return(аскрытьАдрес(Элемент)); } Элемент.СекундПодбора += ВзятьВремя(); Элемент.КоличествоСобрано++; ОбработатьКоличествоЭлемента(Элемент); return(Элемент); }
private TreeNode ДобавитьТовар(TreeNode КореньАдрес, TreeNode ВыбранаСтрока, ЭлементДерева Корень, string[] Строка) { int Строк = Строка.Count(); TreeNode СтрокаСТоваром = new TreeNode(Строка[0]); if (Строк > 2 && Строка[2] == "Выбрать") { ВыбранаСтрока = СтрокаСТоваром; } СтрокаСТоваром.Tag = Строка[1]; СтрокаСТоваром.Text = Строка[0]; КореньАдрес.Nodes.Add(СтрокаСТоваром); return(ВыбранаСтрока); }
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); }
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 = ВыбранаСтрока.Ветвь; } }
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]; }
private void ОбработатьКоличествоЭлемента(ЭлементДерева Элемент) { if (Элемент.КоличествоСобрано == Элемент.КоличествоТребуется || Элемент.КоличествоВычерк > 0) { if (Элемент.Ветвь == null) { return; //ветвь уже удалена! на экране её нет } var ВАдресеНаЭкране = Элемент.Ветвь.Parent; УдалитьНаЭкране(Элемент); if (ВАдресеНаЭкране.Nodes.Count == 0)//у ветки с адресом проверяем количество нодов-товаров { УдалитьТекущийАдресНаЭкране(); ПроверитьЗаданиеИЗавершить();//а не завершили ли мы задание случаем return; } } Элемент.ОбновитьТекстЭлемента(); }
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 = ВыбранаСтрока; } }