Управление видимостью перьев

<< Click to Display Table of Contents >>

Navigation:  Проект > Элементы дерева объектов > Палитра ФБ > Служебные > Скрипт > Руководство и примеры > Работа с трендами >

Управление видимостью перьев

Можно включать и отключать видимость перьев добавленных на тренд. Для этого есть специальный флаг в легенде и минилегенде:

sluzhebnie_skript_rukovodstvo_i_primery_rabota_s_trendami_upravlenie_vidimostyu_perev

Иногда может потребоваться управлять видимостью извне по алгоритму - например, при смене режимов работы установки, когда некоторые параметры в данный момент не нужны. Данную задачу также можно автоматизировать с помощью скрипта.

Сделаем заготовку - в объект добавим три значения, которые будут параметрами добавляемыми на тренд, именно их и мы и будем скрывать. Три команды для управления видимостью, и кнопки с фиксацией, а одна кнопка для применения выбора.

sluzhebnie_skript_rukovodstvo_i_primery_rabota_s_trendami_upravlenie_vidimostyu_perev1

Заготовка скрипта - аналогичная.

Для того чтобы обращаться к перу, сначала необходимо получить их список. Для этого нужно воспользоваться методом:

var list = trend.Settings.Objects.OfType<MasterSCADA.Graph.Objects.Graph2D>().ToList();

Получившаяся переменная list - это коллекция List, с которой можно работать используя циклы for, while, foreach или обращаться к элементам по индексам. У каждого пера есть набор свойств, за видимость пера отвечает свойство Visible.

Для примера сделаем простейший вариант - будет обращаться по индексу к нашей коллекции и изменять свойство видимости.

//получаем коллекцию перьев
var list = trend.Settings.Objects.OfType<MasterSCADA.Graph.Objects.Graph2D>().ToList();
//далее поиск по номеру
//получаем нулевое перо
var param = list[0];
//скрыть видимость параметра тренда
param.Visible = Видимость_пера_0.Value;
//получаем первое перо
param = list[1];
//скрыть видимость параметра тренда
param.Visible = Видимость_пера_1.Value;
//получаем второе перо
param = list[2];
//скрыть видимость параметра тренда
param.Visible = Видимость_пера_2.Value;

Можно еще проще:

//получаем коллекцию перьев
var list = trend.Settings.Objects.OfType<MasterSCADA.Graph.Objects.Graph2D>().ToList();
//далее по номеру
list[0].Visible = Видимость_пера_0.Value;
list[1].Visible = Видимость_пера_1.Value;
list[2].Visible = Видимость_пера_2.Value;

Итоговый код будет выглядеть так:

public override void Execute()
{
    if (Применить == true && M == false)
    {
        //Ссылка на текущий проект       
        var Project = HostFB.TreeItemHlp.Project;
        //получаем корневой объект
        var ParentObject = (ITreeItemHlp)HostFB.TreeItemHlp.Parent;
        //получаем тренд        
        RTManager.Instance.ThreadHolder.BeginInvoke(new ThreadStart(delegate
        {
            foreach (Trend trend in Project.GetService<TrendService>().Opened)
            {
                var host = trend.Host as System.Windows.Forms.Control;
                if (host != null)
                {
                    Object name = WinFormsControlBase.GetAmbientProperty(host, WindowlessControlBase.DISPID.DISPID_AMBIENT_NAME);
                    if (name.ToString() != ИМЯ_ТРЕНДА || trend.Attribute.TreeItem.ID != ParentObject.ID || trend.Attribute.DisplayName != ИМЯ_ОКНА) continue;
                    //получаем коллекцию перьев
                    var list = trend.Settings.Objects.OfType<MasterSCADA.Graph.Objects.Graph2D>().ToList();
                    //далее поиск по номеру
                    //получаем нулевое перо
                    var param = list[0];
                    //скрыть видимость параметра тренда
                    param.Visible = Видимость_пера_0.Value;
                    //получаем первое перо
                    param = list[1];
                    //скрыть видимость параметра тренда
                    param.Visible = Видимость_пера_1.Value;
                    //получаем второе перо
                    param = list[2];
                    //скрыть видимость параметра тренда
                    param.Visible = Видимость_пера_2.Value;
                }
            }
        }));
    }
    M = Применить;
}

Проверим работу в режиме исполнения:

sluzhebnie_skript_rukovodstvo_i_primery_rabota_s_trendami_upravlenie_vidimostyu_perev2

Готовый пример можно скачать по ссылке.