AutoGRAPH.5PRO Module SetElementNodes — различия между версиями

Материал из TK
Перейти к: навигация, поиск
(Новая страница: «// Пример переименования элемента <br/>var targetNode = shellProvider.GetElementNodeInfo(elementTyp…»)
 
 
Строка 1: Строка 1:
  +
//&nbsp;Создаёт&nbsp;новые&nbsp;или&nbsp;перемещает&nbsp;элементы&nbsp;с&nbsp;указанными&nbsp;идентификаторами&nbsp;в&nbsp;родительские&nbsp;узлы,&nbsp;указанные&nbsp;свойством&nbsp;Parent&nbsp;<br/>//&nbsp;Parent&nbsp;может&nbsp;указывать&nbsp;как&nbsp;на&nbsp;имеющиеся&nbsp;узлы,&nbsp;так&nbsp;и&nbsp;на&nbsp;создаваемые&nbsp;из&nbsp;массива&nbsp;elements&nbsp;<br/>//&nbsp;(в&nbsp;этом&nbsp;случае&nbsp;родительский&nbsp;элемент&nbsp;должен&nbsp;иметь&nbsp;меньший&nbsp;индекс&nbsp;в&nbsp;массиве,&nbsp;чем&nbsp;дочерний)&nbsp;<br/>bool&nbsp;SetElementNodes(ElementType&nbsp;elementType,&nbsp;GroupOrElementInfo[]&nbsp;elements);&nbsp;&nbsp;
  +
 
//&nbsp;Пример&nbsp;переименования&nbsp;элемента&nbsp;<br/>var&nbsp;targetNode&nbsp;=&nbsp;shellProvider.GetElementNodeInfo(elementType,&nbsp;Guid);&nbsp;<br/>var&nbsp;nodes&nbsp;=&nbsp;new&nbsp;List&lt;GroupOrElementInfo&gt;();&nbsp;<br/>nodes.Add(new&nbsp;GroupOrElementInfo(targetNode)&nbsp;{&nbsp;Name&nbsp;=&nbsp;"noname"&nbsp;});&nbsp;<br/>shellProvider.SetElementNodes(elementType,&nbsp;nodes.ToArray());&nbsp;<br/><br/>//&nbsp;Пример&nbsp;создания&nbsp;папки&nbsp;и&nbsp;элемента&nbsp;в&nbsp;ней&nbsp;<br/>var&nbsp;targetNode&nbsp;=&nbsp;shellProvider.GetElementNodeInfo(elementType,&nbsp;Guid);&nbsp;<br/>var&nbsp;nodes&nbsp;=&nbsp;new&nbsp;List&lt;GroupOrElementInfo&gt;();&nbsp;<br/>var&nbsp;group&nbsp;=&nbsp;new&nbsp;GroupOrElementInfo(GroupNodeType.Group,&nbsp;"Group&nbsp;1",&nbsp;targetNode);&nbsp;<br/>nodes.Add(group);&nbsp;<br/>nodes.Add(new&nbsp;GroupOrElementInfo(GroupNodeType.Element,&nbsp;"Element&nbsp;1",&nbsp;group));&nbsp;<br/>shellProvider.SetElementNodes(elementType,&nbsp;nodes.ToArray());&nbsp;<br/><br/>//&nbsp;Пример&nbsp;выноса&nbsp;папки/элемента&nbsp;из&nbsp;группы&nbsp;с&nbsp;сохранением&nbsp;всех&nbsp;индивидуальных&nbsp;настроек&nbsp;<br/>var&nbsp;targetNode&nbsp;=&nbsp;shellProvider.GetElementNodeInfo(elementType,&nbsp;Guid);&nbsp;<br/>var&nbsp;nodes&nbsp;=&nbsp;new&nbsp;List&lt;GroupOrElementInfo&gt;();&nbsp;<br/>if&nbsp;(targetNode.Parent&nbsp;!=&nbsp;null)&nbsp;nodes.Add(new&nbsp;GroupOrElementInfo(targetNode)&nbsp;{&nbsp;Parent&nbsp;=&nbsp;targetNode.Parent.Parent&nbsp;});&nbsp;<br/>shellProvider.SetElementNodes(elementType,&nbsp;nodes.ToArray());&nbsp;<br/><br/>//&nbsp;Пример&nbsp;переноса&nbsp;папки/элемента&nbsp;в&nbsp;соседнюю&nbsp;группу&nbsp;с&nbsp;сохранением&nbsp;всех&nbsp;индивидуальных&nbsp;настроек&nbsp;<br/>var&nbsp;targetNode&nbsp;=&nbsp;shellProvider.GetElementNodeInfo(elementType,&nbsp;Guid);&nbsp;<br/>var&nbsp;nodes&nbsp;=&nbsp;new&nbsp;List&lt;GroupOrElementInfo&gt;();&nbsp;<br/>if&nbsp;(targetNode.Parent&nbsp;!=&nbsp;null&nbsp;&&&nbsp;targetNode.Parent.Parent&nbsp;!=&nbsp;null)&nbsp;<br/>{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;children&nbsp;=&nbsp;targetNode.Parent.Parent.Children.Where(c&nbsp;=>&nbsp;c.Type&nbsp;==&nbsp;GroupNodeType.Group).ToArray();&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(children.Length&nbsp;>&nbsp;1)&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;index&nbsp;=&nbsp;Array.IndexOf(children,&nbsp;targetNode.Parent);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(index&nbsp;>&nbsp;0)&nbsp;index--;&nbsp;else&nbsp;index++;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodes.Add(new&nbsp;GroupOrElementInfo(targetNode)&nbsp;{&nbsp;Parent&nbsp;=&nbsp;children[index]&nbsp;});&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br/>}&nbsp;<br/>shellProvider.SetElementNodes(elementType,&nbsp;nodes.ToArray());&nbsp;
 
//&nbsp;Пример&nbsp;переименования&nbsp;элемента&nbsp;<br/>var&nbsp;targetNode&nbsp;=&nbsp;shellProvider.GetElementNodeInfo(elementType,&nbsp;Guid);&nbsp;<br/>var&nbsp;nodes&nbsp;=&nbsp;new&nbsp;List&lt;GroupOrElementInfo&gt;();&nbsp;<br/>nodes.Add(new&nbsp;GroupOrElementInfo(targetNode)&nbsp;{&nbsp;Name&nbsp;=&nbsp;"noname"&nbsp;});&nbsp;<br/>shellProvider.SetElementNodes(elementType,&nbsp;nodes.ToArray());&nbsp;<br/><br/>//&nbsp;Пример&nbsp;создания&nbsp;папки&nbsp;и&nbsp;элемента&nbsp;в&nbsp;ней&nbsp;<br/>var&nbsp;targetNode&nbsp;=&nbsp;shellProvider.GetElementNodeInfo(elementType,&nbsp;Guid);&nbsp;<br/>var&nbsp;nodes&nbsp;=&nbsp;new&nbsp;List&lt;GroupOrElementInfo&gt;();&nbsp;<br/>var&nbsp;group&nbsp;=&nbsp;new&nbsp;GroupOrElementInfo(GroupNodeType.Group,&nbsp;"Group&nbsp;1",&nbsp;targetNode);&nbsp;<br/>nodes.Add(group);&nbsp;<br/>nodes.Add(new&nbsp;GroupOrElementInfo(GroupNodeType.Element,&nbsp;"Element&nbsp;1",&nbsp;group));&nbsp;<br/>shellProvider.SetElementNodes(elementType,&nbsp;nodes.ToArray());&nbsp;<br/><br/>//&nbsp;Пример&nbsp;выноса&nbsp;папки/элемента&nbsp;из&nbsp;группы&nbsp;с&nbsp;сохранением&nbsp;всех&nbsp;индивидуальных&nbsp;настроек&nbsp;<br/>var&nbsp;targetNode&nbsp;=&nbsp;shellProvider.GetElementNodeInfo(elementType,&nbsp;Guid);&nbsp;<br/>var&nbsp;nodes&nbsp;=&nbsp;new&nbsp;List&lt;GroupOrElementInfo&gt;();&nbsp;<br/>if&nbsp;(targetNode.Parent&nbsp;!=&nbsp;null)&nbsp;nodes.Add(new&nbsp;GroupOrElementInfo(targetNode)&nbsp;{&nbsp;Parent&nbsp;=&nbsp;targetNode.Parent.Parent&nbsp;});&nbsp;<br/>shellProvider.SetElementNodes(elementType,&nbsp;nodes.ToArray());&nbsp;<br/><br/>//&nbsp;Пример&nbsp;переноса&nbsp;папки/элемента&nbsp;в&nbsp;соседнюю&nbsp;группу&nbsp;с&nbsp;сохранением&nbsp;всех&nbsp;индивидуальных&nbsp;настроек&nbsp;<br/>var&nbsp;targetNode&nbsp;=&nbsp;shellProvider.GetElementNodeInfo(elementType,&nbsp;Guid);&nbsp;<br/>var&nbsp;nodes&nbsp;=&nbsp;new&nbsp;List&lt;GroupOrElementInfo&gt;();&nbsp;<br/>if&nbsp;(targetNode.Parent&nbsp;!=&nbsp;null&nbsp;&&&nbsp;targetNode.Parent.Parent&nbsp;!=&nbsp;null)&nbsp;<br/>{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;children&nbsp;=&nbsp;targetNode.Parent.Parent.Children.Where(c&nbsp;=>&nbsp;c.Type&nbsp;==&nbsp;GroupNodeType.Group).ToArray();&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(children.Length&nbsp;>&nbsp;1)&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;index&nbsp;=&nbsp;Array.IndexOf(children,&nbsp;targetNode.Parent);&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(index&nbsp;>&nbsp;0)&nbsp;index--;&nbsp;else&nbsp;index++;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodes.Add(new&nbsp;GroupOrElementInfo(targetNode)&nbsp;{&nbsp;Parent&nbsp;=&nbsp;children[index]&nbsp;});&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br/>}&nbsp;<br/>shellProvider.SetElementNodes(elementType,&nbsp;nodes.ToArray());&nbsp;

Текущая версия на 12:38, 27 марта 2019

// Создаёт новые или перемещает элементы с указанными идентификаторами в родительские узлы, указанные свойством Parent 
// Parent может указывать как на имеющиеся узлы, так и на создаваемые из массива elements 
// (в этом случае родительский элемент должен иметь меньший индекс в массиве, чем дочерний) 
bool SetElementNodes(ElementType elementType, GroupOrElementInfo[] elements);  

// Пример переименования элемента 
var targetNode = shellProvider.GetElementNodeInfo(elementType, Guid); 
var nodes = new List<GroupOrElementInfo>(); 
nodes.Add(new GroupOrElementInfo(targetNode) { Name = "noname" }); 
shellProvider.SetElementNodes(elementType, nodes.ToArray()); 

// Пример создания папки и элемента в ней 
var targetNode = shellProvider.GetElementNodeInfo(elementType, Guid); 
var nodes = new List<GroupOrElementInfo>(); 
var group = new GroupOrElementInfo(GroupNodeType.Group, "Group 1", targetNode); 
nodes.Add(group); 
nodes.Add(new GroupOrElementInfo(GroupNodeType.Element, "Element 1", group)); 
shellProvider.SetElementNodes(elementType, nodes.ToArray()); 

// Пример выноса папки/элемента из группы с сохранением всех индивидуальных настроек 
var targetNode = shellProvider.GetElementNodeInfo(elementType, Guid); 
var nodes = new List<GroupOrElementInfo>(); 
if (targetNode.Parent != null) nodes.Add(new GroupOrElementInfo(targetNode) { Parent = targetNode.Parent.Parent }); 
shellProvider.SetElementNodes(elementType, nodes.ToArray()); 

// Пример переноса папки/элемента в соседнюю группу с сохранением всех индивидуальных настроек 
var targetNode = shellProvider.GetElementNodeInfo(elementType, Guid); 
var nodes = new List<GroupOrElementInfo>(); 
if (targetNode.Parent != null && targetNode.Parent.Parent != null) 

    var children = targetNode.Parent.Parent.Children.Where(c => c.Type == GroupNodeType.Group).ToArray(); 
    if (children.Length > 1) 
    { 
        var index = Array.IndexOf(children, targetNode.Parent); 
        if (index > 0) index--; else index++; 
        nodes.Add(new GroupOrElementInfo(targetNode) { Parent = children[index] }); 
    } 

shellProvider.SetElementNodes(elementType, nodes.ToArray());