Показано с 1 по 10 из 10

Тема: Отобразить/Спрятать контрол ВФБ

  1. #1

    По умолчанию Отобразить/Спрятать контрол ВФБ

    Здравствуйте!
    Хочу сделать визуальный функциональный блок, у которого будет вход "Отключен", если на этом входе ВКЛ - контрол отключен на мнемосхеме (не виден), если на входе ВЫКЛ - контрол включен на мнемосхеме.
    Взял для примера ВФБ "Blinking" из папки где установлена MasterSCADA и переделал его следующим образом:

    Код:
    public partial class BlinkingControl : VisualControlBase
        {
            public BlinkingControl() : base()
            {
                InitializeComponent();
            }
           
            protected override void OnPaint(PaintEventArgs e)
            {
                if (FBConnector.DesignMode)
                    return;
    
                if (FBConnector.GetPinValue<bool>(Blinking.VisualBlink))
                    this.Visible = false;
                else
                    this.Visible = true;
            }
        }
    При этом, если Вход ВКЛ - контрол исчезает, а если ВЫКЛ - он не появляется. К примеру, если просто менять цвета контрола, то все работает:

    Код:
    public partial class BlinkingControl : VisualControlBase
        {
            public BlinkingControl() : base()
            {
                InitializeComponent();
            }
           
            protected override void OnPaint(PaintEventArgs e)
            {
                if (FBConnector.DesignMode)
                    return;
    
                if (FBConnector.GetPinValue<bool>(Blinking.VisualBlink))
                    this.BackColor = Color.Green;
                else
                    this.BackColor = Color.Yellow;
            }
        }
    Подскажите в чём может быть причина.

  2. #2

    По умолчанию

    А зачем? Почему нельзя стандартный вход Отключен использовать? Он у всех контролов есть.
    Спасибо.

  3. #3

    По умолчанию

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

  4. #4

    По умолчанию

    Если контрол скрыт, то OnPaint он вызывать не будет.
    Спасибо.

  5. #5

    По умолчанию

    Хорошо, какую функцию тогда можно использовать?

  6. #6

    По умолчанию

    Так будет корректно?

    Код:
            public BlinkingControl() : base()
            {
                InitializeComponent();
                FBConnector.PinChanged += new PinChangedHaldler(FBConnector_PinChanged);
            }
    
            void FBConnector_PinChanged(int pinID)
            {
                if (FBConnector.DesignMode)
                    return;
    
                if (!FBConnector.GetPinValue<bool>(Blinking.VisualBlink))
                    this.Visible = true;
                else
                    this.Visible = false;
            }

  7. #7

    По умолчанию

    С виду да - пробуйте.
    Спасибо.

  8. #8

    По умолчанию

    Хорошо, спасибо!

  9. #9

    По умолчанию

    А можно ли как-нибудь управлять приоритетом контролов на мнемосхеме в режиме исполнения? Дело в том, что когда переносишь новый контрол на мнемосхему, он всегда сверху тех, что уже есть на ней, а вот при запуске режима исполнения часть новых контролов прячется за старые - приходится удалять их с мнемосхемы и добавлять заново. Можно ли как-то одни контролы жёстко прописать сверху остальных?

  10. #10

    По умолчанию

    Нет, только безоконные.
    ActiveX контролы Z порядку не подчиняются.
    Спасибо.

Похожие темы

  1. Ответов: 6
    Последнее сообщение: 05.10.2016, 10:57
  2. Отобразить название устройства
    от ALEXSP в разделе Master SCADA 3
    Ответов: 8
    Последнее сообщение: 27.11.2015, 16:58
  3. как отобразить состояние мдвв
    от bob_grin в разделе OWEN Proces Manager
    Ответов: 3
    Последнее сообщение: 20.12.2010, 21:55

Ваши права

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