示例#1
0
        private void ctrlItem_ObjectChanged(object sender, ObjectChangedEventArgs e)
        {
            Modified = true;
            TreeNode        selectedNode    = tvDevice.SelectedNode;
            TreeUpdateTypes treeUpdateTypes = (TreeUpdateTypes)e.ChangeArgument;

            if (e.ChangedObject is SubscriptionConfig subscriptionConfig)
            {
                if (treeUpdateTypes.HasFlag(TreeUpdateTypes.CurrentNode))
                {
                    selectedNode.Text = GetDisplayName(subscriptionConfig.DisplayName, KpPhrases.EmptySubscription);
                }
            }
            else if (e.ChangedObject is ItemConfig itemConfig)
            {
                if (treeUpdateTypes.HasFlag(TreeUpdateTypes.CurrentNode))
                {
                    selectedNode.Text = GetDisplayName(itemConfig.DisplayName, KpPhrases.EmptyItem);
                }

                if (treeUpdateTypes.HasFlag(TreeUpdateTypes.UpdateSignals))
                {
                    UpdateSignals(selectedNode);
                }
            }
            else if (e.ChangedObject is CommandConfig commandConfig)
            {
                if (treeUpdateTypes.HasFlag(TreeUpdateTypes.CurrentNode))
                {
                    selectedNode.Text = GetDisplayName(commandConfig.DisplayName, KpPhrases.EmptyCommand);
                }
            }
        }
示例#2
0
        private void ctrlCmd_ObjectChanged(object sender, ObjectChangedEventArgs e)
        {
            // установка признака изменения конфигурации
            Modified = true;

            // отображение изменений команды в дереве
            TreeUpdateTypes treeUpdateTypes = (TreeUpdateTypes)e.ChangeArgument;

            if (treeUpdateTypes.HasFlag(TreeUpdateTypes.CurrentNode))
            {
                UpdateCmdNode();
            }
        }
示例#3
0
        private void ctrlElem_ObjectChanged(object sender, ObjectChangedEventArgs e)
        {
            // установка признака изменения конфигурации
            Modified = true;

            // отображение изменений элемента в дереве
            TreeUpdateTypes treeUpdateTypes = (TreeUpdateTypes)e.ChangeArgument;

            if (treeUpdateTypes.HasFlag(TreeUpdateTypes.CurrentNode))
            {
                selNode.Text = selElemInfo.Caption;
            }

            if (treeUpdateTypes.HasFlag(TreeUpdateTypes.NextSiblings))
            {
                UpdateElemNodes(selNode.Parent);
            }
        }
示例#4
0
        private void ctrlElemGroup_ObjectChanged(object sender, ObjectChangedEventArgs e)
        {
            // установка признака изменения конфигурации
            Modified = true;

            // отображение изменений группы элементов в дереве
            TreeUpdateTypes treeUpdateTypes = (TreeUpdateTypes)e.ChangeArgument;

            if (treeUpdateTypes.HasFlag(TreeUpdateTypes.CurrentNode))
            {
                UpdateElemGroupNode();
            }

            if (treeUpdateTypes.HasFlag(TreeUpdateTypes.ChildNodes))
            {
                UpdateElemNodes();
            }

            if (treeUpdateTypes.HasFlag(TreeUpdateTypes.UpdateSignals))
            {
                treeView.BeginUpdate();
                int oldElemCnt = selNode.Nodes.Count;
                int newElemCnt = selElemGroup.Elems.Count;

                if (oldElemCnt < newElemCnt)
                {
                    // добавление узлов дерева для новых элементов
                    ushort elemAddr = selElemGroup.Address;

                    for (int elemInd = 0; elemInd < newElemCnt; elemInd++)
                    {
                        Elem elem = selElemGroup.Elems[elemInd];

                        if (elemInd >= oldElemCnt)
                        {
                            ElemInfo elemInfo = new ElemInfo()
                            {
                                Elem      = elem,
                                ElemGroup = selElemGroup,
                                Settings  = template.Sett,
                                Address   = elemAddr
                            };

                            selNode.Nodes.Add(NewElemNode(elemInfo));
                        }

                        elemAddr += (ushort)elem.Quantity;
                    }
                }
                else if (oldElemCnt > newElemCnt)
                {
                    // удаление лишних узлов дерева
                    for (int i = newElemCnt; i < oldElemCnt; i++)
                    {
                        selNode.Nodes.RemoveAt(newElemCnt);
                    }
                }

                UpdateSignals(selNode);
                treeView.EndUpdate();
            }
        }