06.11.2018, 08:21 | #1 |
Senior Member
Регистрация: May 2010
Адрес: Москва
Сообщения: 863
Благодарил(а): 4 раз(а)
Поблагодарили:
86 раз(а) в 67 сообщениях
|
TabOrder
По какому принципу определяется порядок переключения элементов ввода на экране с включенным TabOrder?
Для примера, как будет происходить переключение по TabOrder на экране пикселя из вложения (красным выделены переключающиеся элементы)? |
06.11.2018, 12:24 | #2 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 112
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: TabOrder
Цитата:
Программисты что-то там исследовали, когда придумывали эту функцию, много думали и так далее. А работает она так, как работает - буквально от балды. Порядок задать невозможно. Самую очевидную вещь, которой они сами везде пользуются (и в QT и в C++ и в прочих), увидеть они не смогли за годы существования SMArt. Повлиять на них мне не удалось. PS. Я собрал вашу схему, у меня переключался верх, правый низ, правый верх, левый низ, левый верх. Собрал ещё раз, получилось левый верх, правый низ, правый верх, верх, левый низ. Не просто "отбалды", а "рандомный отбалды". Попробовал переключить кнопки таба с вверх/вних на вправо - не работает. Запишу баг ещё раз, но... __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 06.11.2018 в 12:39 |
|
06.11.2018, 12:59 | #3 | |
Senior Member
Регистрация: May 2010
Адрес: Москва
Сообщения: 863
Благодарил(а): 4 раз(а)
Поблагодарили:
86 раз(а) в 67 сообщениях
|
Ответ: TabOrder
Цитата:
С точки зрения UI в данном случае логичнее было бы переключение Верх, Левый верх, Правый верх, Левый низ, Правый низ. (то есть - справа налево и сверху вниз). На каком-нибудь другом экране было бы логичнее переключать сверху вниз и справа налево. Почему бы тогда не сделать порядок переключения в зависимости от положения в списке объектов экрана (который также отвечает за порядок прорисовки)? |
|
06.11.2018, 13:06 | #4 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 112
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: TabOrder
Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. Последний раз редактировалось Arsie, 15.05.2020 в 18:13 |
|
06.11.2018, 22:57 | #5 |
Member
Регистрация: Apr 2017
Сообщения: 71
Благодарил(а): 0 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
Ответ: TabOrder
Может их выгнать нах?
|
07.11.2018, 01:45 | #6 |
Senior Member
Регистрация: May 2010
Адрес: Москва
Сообщения: 863
Благодарил(а): 4 раз(а)
Поблагодарили:
86 раз(а) в 67 сообщениях
|
Ответ: TabOrder
Собстна, удалось установить порядок.
Во вложении - проект. Если открыть его и запустить SMArt, а потом загрузить проект в контроллер, то порядок переключения будет стандартно "рандомный". Хотя он все же не совсем рандомный. По всей видимости, порядок переключения определяется по такому же принципу, как нумерация и обработка FBD блоков и макросов в Лоджике, ориентируясь на координаты элементов. Если же открыть проект и НЕ запуская SMArt сразу грузить его в контроллер, то порядок переключения будет иным (точно таким, каким надо мне). Вот ссылка на видео https://youtu.be/J_30mDYmjsQ В первой половине стандартный для SMArt порядок TabOrder. Во второй - измененный. Как же так получилось? После сохранения проекта и закрытия лоджика, открываю файл проекта блокнотом (я пользуюсь Notepad++). Поиском нахожу тег <taborder>, смотрю что это за элементы по тегу <name> (тут я именовал элементы латиницей, т.к. кириллица в этой кодировке кракозябнутая). Поняв, что это за элемент и в какую очередь он должен включаться на экране, меняю значение TabOrder на нужное. Так прохожу все нужные элементы на этом экране, нумерую, начиная с 0 и сохраняю файл. Затем открываю проект Лоджиком и сразу гружу в контроллер. Если запустить SMArt, он - собака такая - выставит значения taborder по-своему. Вот скриншот с пояснениями, что я ищу, смотрю и меняю в проекте из блокнота. TabOrder2.png Естественно, всё это на свой страх и риск. Метод очень неудобный, чреват порчей psl файла и сомневаюсь, что вменяемый человек будет его использовать на постоянной основе. И поскольку в описании SMArt-части проекта уже присутствует тэг, определяющий порядок taborder, какая проблема в SMArt'е нарисовать поле ввода этого значения? Всем спокойной ночи, сладких снов. Хорошего дня, там - на Камчатке. |
07.11.2018, 03:12 | #7 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 112
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: TabOrder
Да, знаю этот способ. Он действительно рисковый. А проблема прежде всего в голове человека, ответственного за смарт. Во всём остальном, как видите, проблем нет.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
07.11.2018, 12:06 | #8 |
Senior Member
Регистрация: May 2010
Адрес: Москва
Сообщения: 863
Благодарил(а): 4 раз(а)
Поблагодарили:
86 раз(а) в 67 сообщениях
|
Ответ: TabOrder
|
07.11.2018, 12:39 | #9 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 112
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: TabOrder
Согласитесь, способ совсем не для рядового человека)
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |