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

Тема: Интересный вопрос

  1. #1
    Пользователь
    Регистрация
    27.08.2015
    Адрес
    Екатеринбург
    Сообщений
    22

    По умолчанию Интересный вопрос

    Есть ли возможность управления scroll_bar'ом из программы?

    Сейчас после установки значения управляющей scroll_bar'ом переменной в программе, система визуализации возвращает в переменную прежнее значение (не всегда, но почти всегда).

    Функциональность scroll_bar'а нужна, т.е. полностью отменить ввод scroll_bar'ом нельзя.

    Илья

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,162

    По умолчанию

    Цитата Сообщение от P_Ilya Посмотреть сообщение
    Есть ли возможность управления scroll_bar'ом из программы?

    Сейчас после установки значения управляющей scroll_bar'ом переменной в программе, система визуализации возвращает в переменную прежнее значение (не всегда, но почти всегда).

    Функциональность scroll_bar'а нужна, т.е. полностью отменить ввод scroll_bar'ом нельзя.

    Илья
    Есть, система визуализации ничего сбрасывать не должна.



    Возможно, дело в вашей программе?

  3. #3
    Пользователь
    Регистрация
    27.08.2015
    Адрес
    Екатеринбург
    Сообщений
    22

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Есть, система визуализации ничего сбрасывать не должна.
    Однако, сбрасывает. И должна так делать! А иначе как будет осуществляться ввод значений скролл баром?!

    Добавил таймер (на 2 секунды) на установку нового значения. Пока таймер не сработал, новое значение заносится (вижу отладчиком), но бегунок скролл бара не двигается. После того, как таймер сработал и новое значение не заносится, значение устанавливается системой визуализации (я про ту переменную, которая прописана в поле Value элемента визуализации Scrolbar).

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Возможно, дело в вашей программе?
    Безусловно! Без вариантов!

    Единственный скролл бар (безо всего остального) ведёт себя прекрасно.

    Илья

  4. #4
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,162

    По умолчанию

    Цитата Сообщение от P_Ilya Посмотреть сообщение
    Однако, сбрасывает. И должна так делать! А иначе как будет осуществляться ввод значений скролл баром?!

    Добавил таймер (на 2 секунды) на установку нового значения. Пока таймер не сработал, новое значение заносится (вижу отладчиком), но бегунок скролл бара не двигается. После того, как таймер сработал и новое значение не заносится, значение устанавливается системой визуализации (я про ту переменную, которая прописана в поле Value элемента визуализации Scrolbar).



    Безусловно! Без вариантов!

    Единственный скролл бар (безо всего остального) ведёт себя прекрасно.

    Илья
    Извините, а можно еще раз подробно описать проблему? Т.е. чего вы хотите и что происходит в реальной жизни.

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

    По возможности, выложите, пожалуйста, проект.

  5. #5
    Пользователь
    Регистрация
    27.08.2015
    Адрес
    Екатеринбург
    Сообщений
    22

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Извините, а можно еще раз подробно описать проблему? Т.е. чего вы хотите и что происходит в реальной жизни.

    Я имел в виду, что на положение скроллбара влияет только значение привязанной переменной, неважно, как оно меняется - с помощью самого элемента или из программы.
    Можно. Эмулирую таблицу: каждый отдельный экран -- это несколько строк "таблицы". Пытаюсь приспособить скроллбар для навигации по такой "таблице". При изменении положения бегунка на скроллбаре нужно менять экран. Все работает, кроме установки скроллбара на новой странице. Разумеется, на каждой странице свой скроллбар. Сейчас чаще всего положение скроллбара устанавливается правильно, но бывает, что положение не устанавливается. В этом случае программа отрабатывает так, как будто оператор изменил положение бегунка скроллбара (и это, в общем то, правильно).

    Хотелось бы, чтобы значение устанавливаемое из программы не менялось без воздействия оператора.

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    По возможности, выложите, пожалуйста, проект.
    Вырезал лишнее, проблема наблюдается.

    СПК 207, прошивка 3.945. Codesys v3.5 sp5 patch 5.

    Илья
    Вложения Вложения
    Последний раз редактировалось P_Ilya; 06.11.2015 в 15:32. Причина: Приложил файл

  6. #6
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,162

    По умолчанию

    Да, теперь я понимаю, о чем вы говорите. Как уже упоминалось, проблема не связана с СПК или CODESYS, и, на мой взгляд, вам проще других должно быть ориентироваться в вашем коде.

  7. #7
    Пользователь
    Регистрация
    27.08.2015
    Адрес
    Екатеринбург
    Сообщений
    22

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Да, теперь я понимаю, о чем вы говорите.
    Т.е. пример вы запустили и аномальное поведение наблюдали?

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Как уже упоминалось, проблема не связана с СПК или CODESYS,
    Ну, я так не думаю. Оператор изменения значения привязанной к scrollbar'у переменной

    scrollbar_value := scrollbar_set;

    выполнял под отладчиком. Но значение scrollbar_value не менялось, оставалось тем же, которое установила система визуализации после воздействия оператора на scrollbar. Поэтому и возник изначальный вопрос.

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    и, на мой взгляд, вам проще других должно быть ориентироваться в вашем коде.
    Это то безусловно! Но если вам сложно ориентироваться в пятнадцати функциях (пара сотен строк кода), то зачем было просить пример?

    На всякий случай укажу ключевые элементы:
    activate_cur_page -- в этой функции изменяется экран визуализации и устанавливается значение связанной со скроллбаром переменной;
    table_movement -- в этой блоке отслеживается изменение связанной со скроллбаром переменной в результате действий оператора;
    g0101 и g0102 -- экраны со скроллбарами.

    Если была бы хоть капля надежды на исправление, то я бы подготовил кристально ясный пример :-)

    Илья

  8. #8
    Пользователь
    Регистрация
    27.08.2015
    Адрес
    Екатеринбург
    Сообщений
    22

    По умолчанию

    Только что додумался до следующего объяснения. Задача визуализации имеет наименьший приоритет. Где-то в её недрах происходит считывание переменной привязанной к скроллбару. После этого запускается главная задача (которая вытесняет задачу визуализации). В главной задаче меняется значение переменной. После возобновления задачи визуализации в ней тоже выполняется запись значения в эту же переменную. Только так я могу объяснить, что значение привязанной переменной не меняется при пошаговом выполнении программы под отладчиком (это я наблюдал не единожды).

    В понедельник проверю эту гипотезу.

    Илья

  9. #9
    Пользователь
    Регистрация
    27.08.2015
    Адрес
    Екатеринбург
    Сообщений
    22

    По умолчанию

    Цитата Сообщение от P_Ilya Посмотреть сообщение
    В понедельник проверю эту гипотезу.
    Проверил. Приоритеты задач на воспроизводимость ошибки не влияют.

    Илья

  10. #10
    Пользователь
    Регистрация
    27.08.2015
    Адрес
    Екатеринбург
    Сообщений
    22

    По умолчанию

    Изменять значение привязанной переменной вне зависимости от внутренней логики скролл бара научился :-)

    Теперь другая проблема вылезла. Так как у меня скролл бар меняет отображаемый экран, то возникает следующая ситуация. На первом экране нажимаю кнопочку скролл бара "вниз". Меняется значение привязанной переменной. В соответствии с новым значением переменной меняю отображаемый экран. После завершения работы на новом экране возвращаюсь к первому экрану. Переустанавливаю привязанную к скролл бару переменную. Но! Скролл бар на первом экране всё ещё "помнит" что нажали кнопку "вниз" (я это заметил по раскраске кнопочек!), но на экране ничего не нажато. В соответствии с этим фантомным "нажатием" скролл бар снова меняет привязанную переменную. И как это победить я не знаю. Может кто-нибудь что-нибудь предложить?

    Т.е. нужно, чтобы при отсутствии касаний экрана скролл бар "отпускал" кнопку. Как это сделать?

    Илья

Похожие темы

  1. Интересный вопрос
    от Maxim_nullmodem в разделе СПК2хх
    Ответов: 12
    Последнее сообщение: 21.10.2015, 09:52
  2. Ответов: 4
    Последнее сообщение: 20.05.2013, 22:50
  3. Очень интересный факт. Глюк в SFC.
    от Илья ИТ в разделе ПЛК1хх
    Ответов: 0
    Последнее сообщение: 18.03.2009, 17:12

Ваши права

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