Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Gabrrr

Страницы: [1]
1
Очередной пример с индикацией состояния мест хранения, тут уж иконка обязательно должна быть обычным объектом.   
Большое спасибо за уделенное время. Я точно пару полезных вещей подсмотрел. Не уверен правда пока на каком варианте остановиться, то что у меня было или что-то ближе к вашему сделать.

Цитировать
Можно попробовать "Пишущую машинку" из вложения. Это просто основа, к которой можно добавить редактирование,  и т.д.
Как вариант. Для меня может даже проще будет просто таблицу использовать, а при чтении парсить знаки переноса обратно в новую строку таблицы.

2
иконка не является шаблоном
Я потыкался, но не понимаю откуда это ограничение. Вроде как без разницы кто окно вызовет шаблон или просто объект. Вся "магия" у вас вроде внутри окна происходит.

Можно достаточно просто работать с этой тройкой одиночными запросами к БД и нет необходимости в таблице
У меня к таблице ещё состояние иконок привязано, чтобы было понятно заполнено (т.е. есть какая то информация в БД отличная от нулл для этого места). Я конечно чую, что я  в определенный момент где-то окараюсь и не обновлю вовремя таблицу, но и слать сотни мелких запросов вместо одного большого как будто странно.

При инициализации шаблонного окна устанавливается цепочка ссылок на управляющие и информационные объекты окна.
Это действительно интересная идея и реализация. Думаю цепочку ссылающихся друг на друга объектов могу куда то прикрутить.
А подскажите в SimpleScada инициализация этих шаблонных окон ведь происходит на этапе компиляции/старта сервера? Т.е. когда вы в проекте сделали ссылки на TemplateWnd1 для нескольких текстовых полей, то экземпляры этого окна сразу создались? Или они в момент клика реально инициализируются и появляются в памяти?

И ещё, хотя это немного оффтопик для данной темы, не подскажите как обычно реализуют многострочный ввод/отображение текстовой информации. Т.е. у меня будет запись в бд "комментарий" для каждого места, который неплохо было бы вводить, да и отображать, в несколько строк для читаемости. Для вывода я так понимаю можно подменять что-то на #13#10, либо просто читать текст из БД в котором уже есть переносы строк, но как это вводить не очень понятно. Пока идеи или заставлять оператора использовать какой то символ (условно @) в качестве символа переноса, или делать несколько полей для ввода, каждое из которых будет отвечать за свою строку.



3
Вы изложили свой подход, но никак ни задачу. Для возможности других подходов недостаточно информации. "Огласите весь список, пж-жалуйста" (с) "Операция Ы и ...". Если это не страшная тайна, разумеется.
Добрый день. Да я вроде довольно подробно изложил.
Но задача довольно банальная - обновить поля в окне, когда данные изменились. Конкретнее - есть куча мест хранения, отображаемая на мнемосхеме иконками. Тыкаем на иконку, открывается окно, в котором должна отображаться информации о том, что в этом месте хранится. Информация хранится в БД (хотя лично в моем подходе я использую таблицу в качестве буфера, для того чтобы хранить результаты последнего чтения, а не опрашивать БД каждый раз). Соответственно в окне места хранения есть несколько кнопок, например, "удалить предмет" или "создать предмет". Если я создаю предмет, то соответственно вызывается ещё одно окошко, которое надо заполнить. Если удаляю, то после окна конфирмации, я удаляю. И вот собственно вопрос отсюда и пошел. У меня на момент выполнения команд создания или удаления уже открыто окно с отображением информации. И эту информацию после выполненных действий надо как то обновить, без того чтобы оператор закрывал и открывал окно заново. А привязывать окна к внутренним переменным (в которые можно было бы закидывать результаты запроса) не очень хочется, т.к. даже структур и массивов для внутренних переменных нет, насколько я понял. 

4
Добрый день.
Исходные данные - Есть шаблонные окна. Информация отображаемая в окне берется из таблицы. Таблица заполняется из базы данных. Информация заполняется скриптом, вызываемым событием OnShow окна.
Задача - Обновить отображаемые в окне данные, при изменении данных в таблице, если окно уже открыто.
Мое решение - У меня есть переменная, которая изменяется каждый раз при изменении таблицы. В шаблонном окне я на шейп повесил эту переменную, и на OnDataChange я повесил свой скрипт. Скрипт выполняет нужную мне задачу, данные обновляются, но мне не очень нравится что скрипт вызывается и для тех окон, которые на текущий момент не видны никому. Я предполагаю, что окна инициализируются на старте проекта на сервере, поэтому они существуют и скрипты для них выполняются.

Вопросы- Есть ли какая то возможность понять отображается где-то шаблонное окно или нет, чтобы я мог не выполнять скрипт для невидимых никому окон? Или есть в принципе подход получше для решения такого рода задачи? (Если что хранить данные не в таблицах, а в переменных не очень хочется, т.к. окон таких в проекте штук 300-500 и создавать под всё это переменные как то не с руки). Может быть можно как то скриптом перебрать все отображаемые в данный момент окна, и вызвать для них нужное событие?

Страницы: [1]