Страница 11 из 13 ПерваяПервая ... 910111213 ПоследняяПоследняя
Показано с 101 по 110 из 126

Тема: Создание ActiveX элементов для masterSCADA

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Здравствуйте, начинаю изучение написания собственных ActiveX-элементов на c#, изучив пример в папке ..\MasterSCADA\Examples\Examples\UserControls\Read ScaleOfValue (получение шкалы при переносе значения в textBox), возник такой вопрос: как получить величину шкалы (и различные ее атрибуты) не перетаскиванием значения в поле, а привязыванием этого значения к динамическому входу ActiveX-элемента.
    вот пример кода (но видимо чего-то тут я не понимаю):
    [DispId(2),
    DisplayName("Вход2")]
    public int ID
    {
    get { return trackBar1.Value; }
    set
    {
    ITreePinHlp pinHlp = MasterSCADAHlp.Instance.CurrentProject.ItemByID(va lue) as ITreePinHlp;

    int unitID;
    double scaleLo, scaleHi;
    string name;
    short digits;
    string UnitName;
    string temp1;

    pinHlp.PinScale.GetInterval(out scaleLo, out scaleHi, out name, out digits, out unitID);
    label2.Text = scaleLo.ToString(); //нижняя граница шкалы
    label3.Text = scaleHi.ToString(); //верхняя граница шкалы
    pinHlp.PinScale.GetUnit(unitID, out UnitName, out temp1);
    label4.Text = UnitName; //единицы измерения
    label5.Text = digits.ToString(); //количество знаков после запятой
    }
    }
    не знаю как получить ID этого значения, которое перетаскиваю на динамический вход. Узнать бы его и заменить им значение Value
    Последний раз редактировалось PustovoyKE; 25.11.2013 в 18:41.

  2. #2

    По умолчанию

    В ActiveX шкалу отследить затруднительно.
    Лучше напишите ВФБ - в нем это сделать можно.
    Спасибо.

  3. #3

    По умолчанию

    Спасибо, буду думать. Хотелось конечно сделать ActiveX, чтоб его потом можно было на мнемосхемы пачками вставлять и в дереве проекта они не мешались

  4. #4

    По умолчанию

    Ну какие то связи с деревом объектов ActiveX все равно будет иметь, так что разницы нет.
    Если нормально строить проект, то элементы не будут мешаться.
    Спасибо.

  5. #5

    По умолчанию

    В этом случае нужно обратится к другому объекту. Например ITreeItemHlp.GetChild("относительный путь") или IProjectHlp.Item("абсолютный путь")
    Спасибо.

  6. #6

    По умолчанию

    Извините за глупый вопрос: но что подразумевается под относительным и абсолютным путем?

  7. #7

    По умолчанию

    Относительный - это короткий путь к объектам ниже иерархии (то есть вложенным в данный объект объектам).
    Абсолютный - полный путь к объекту.
    Спасибо.

  8. #8

    По умолчанию

    При попытке использовать данное свойство появляется ошибка вида: "Для нестатического поля, метода или свойства "MasterSCADA.Hlp.IProjectHlp.Item(string)" требуется ссылка на объект". Подскажите пожалуйста какие классы нужно подключить и как выглядит абсолютный путь объекта.
    IProjectHlp.Item("Объект 2.Мнемосхема") или IProjectHlp.Item("Объект 2\Мнемосхема") или как-то иначе?

  9. #9

    По умолчанию

    Мнемосхему в пути указывать не надо.
    Для полного пути:
    var Mnemo= ((ITreeItemHlp)Attribute.TreeItemHlp.Project.Item( "Объект.Объект1")).Attributes["Мнемосхема"];
    Mnemo.Open();

    Для относительного пути:
    var Mnemo=((ITreeItemHlp)Attribute.TreeItemHlp.GetChil d("Объект1")).Attributes["Мнемосхема"];
    Mnemo.Open();
    Спасибо.

  10. #10

    По умолчанию

    Цитата Сообщение от SCADAMaster Посмотреть сообщение
    Мнемосхему в пути указывать не надо.
    Для полного пути:
    var Mnemo= ((ITreeItemHlp)Attribute.TreeItemHlp.Project.Item( "Объект.Объект1")).Attributes["Мнемосхема"];
    Mnemo.Open();

    Для относительного пути:
    var Mnemo=((ITreeItemHlp)Attribute.TreeItemHlp.GetChil d("Объект1")).Attributes["Мнемосхема"];
    Mnemo.Open();
    Сделал все как вы описали, однако не хочет компилировать:
    "System.Attribute" не содержит определение для "TreeItemHlp"

    Я наверное что-то делаю неправильно или не использую какой-то модуль в uses ?

    Вот код ниже:
    using MasterSCADA.GUI;
    using MasterSCADA.Hlp;
    using System;
    using System.ComponentModel;
    using System.Runtime.InteropServices;

    namespace Control
    {
    [ComVisible(true),
    Guid("DCE97106-1B8C-4D61-81DF-BDA93083C180"),
    DisplayName("Контрол")]
    public partial class UserControl1 : WinFormsControlBase
    {
    public UserControl1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    var Mnemo = ((ITreeItemHlp)Attribute.TreeItemHlp.Project.Item( "Объект.Объект1")).Attributes["Мнемосхема"];
    Mnemo.Open();
    }
    }
    }

Страница 11 из 13 ПерваяПервая ... 910111213 ПоследняяПоследняя

Похожие темы

  1. Создание ActiveX компонента для MasterSCADA.
    от 42ia в разделе Master SCADA 3
    Ответов: 32
    Последнее сообщение: 30.05.2012, 09:17
  2. Ответов: 2
    Последнее сообщение: 13.03.2012, 15:13
  3. Некорректное отображение элементов
    от pahenziy в разделе Панели оператора (HMI)
    Ответов: 9
    Последнее сообщение: 05.10.2011, 17:10
  4. Создание сети RS-485
    от Kotov666 в разделе Сервисное ПО
    Ответов: 3
    Последнее сообщение: 09.04.2009, 15:52
  5. Ответов: 3
    Последнее сообщение: 28.08.2008, 18:34

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •