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

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

Автор Тема: Не открываются окна, отмеченные как форма ввода.  (Прочитано 1958 раз)

OlegM

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Добрый день.
После последнего обновления я открыл и пересохранил свой проект.
Затем переделал обычное окно на форму ввода (оно у меня для добавления рецепта).
Форма ввода открывается только один раз - после закрытия она уже не открывается.

Нашел решение - если в новой версии создать новую форму и скопировать туда элементы из старого окна, то все работает - форма открывается и закрывается сколько угодно раз.
PS: Возможно кто-то столкнется или уже столкнулся с таким поведением и не знает что делать.
« Изменён: 10 Марта 2025, 10:33:22 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Здравствуйте.

Проделали действия, которые Вы описали (взяли старый проект сделанный в 2.6.15.0 и тестируем с 2.7.0.0). Никаких проблем не возникает, окно у которого было включено свойство "использовать как форму ввода" после сохранения и запуска проекта открывается без ограничений. В целом само свойство "использовать как форму ввода" никак не влияет на количество открытий окна, меняется только поведение объектов внутри окна/формы. Можем только предположить, что в скриптах есть код, который взаимодействует с окном и приводит к тому, что оно открывается один раз. После создания нового окна скрипты на него не влияют, т.к. у него новое имя, которое не используется в скриптах.

У Вас проблема с формой возникла на десктоп клиенте, или на web? Какая версия проекта была до пересохранения? Окно открывается скриптом, или просто привязано к объекту?
Пришлите на support@simple-scada.com проект до пересохранения (либо ту версию проекта, в которой форма открывается только один раз) и укажите окно с которым возникла проблема. Тогда сможем проверить и сказать точную причину.
« Изменён: 10 Марта 2025, 10:33:29 от Simple-Scada »

OlegM

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Нашел ту строчку из-за которой возникает такое странное поведение формы:
Код: (delphi)
CloseAllWindows(GetClientName);
Эта инструкция идет последней в моем скрипте по нажатию на кнопку Добавить.

Получается так: форма закрывается автоматически если у кнопки указано действие "Отправить форму", и если в скрипте для отправки формы добавить закрытие всех окон, то это окно закроется (при первой отправке формы) и уже больше не откроется.

Вот скрипт (тип: заполнена форма) на кнопку Добавить целиком:
Код: (delphi)
var
  aProgramName, aQuery, aWoodType: string;
begin
  if FormData.Window <> wndAddProgram then
    Exit;

  aProgramName := FormData[fldProgramName_wndAddProgram].AsStr;
  aWoodType := FormData[cmbWoodType_wndAddProgram].AsStr; // из комбо-бокса в FormData забирается свойство ItemIndex

  if aProgramName.Trim = '' then
    begin
      FormData.SetError('Введите название программы сушки.');
      Exit;
    end;

  aQuery := ''+
  '  INSERT INTO programs (name, wood_type_id)'+
  '  VALUES ('+
       QuotedStr(aProgramName) +','+
  '    (SELECT id FROM wood_types WHERE enum_value = '+ QuotedStr(aWoodType) +')'+
  '  );';
  RunSQL(aQuery, nil, CREATE_PROGRAM);

  //HideStagesParamsTables;

  // если есть эта инструкция, то после закрытия и отправки формы, эта форма уже больше не откроется!
  CloseAllWindows(GetClientName);
end.
« Изменён: 10 Марта 2025, 10:36:48 от OlegM »

OlegM

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Тогда возникает вопрос: как закрыть все окна и/или формы на экране через скрипт, у которого тип "Заполнена форма" ?
« Изменён: 10 Марта 2025, 11:04:48 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Тогда возникает вопрос: как закрыть все окна и/или формы на экране через скрипт, у которого тип "Заполнена форма" ?
С закрытием формы через скрипт (CloseAllWindows / CloseActiveWindow) сделать не получится. Сейчас можно использовать только стандартную отправку формы через кнопку, тогда форма будет автоматически корректно закрыта.

В обновление 2.7.1.0 добавили для форм возможность закрытия через скрипты.
« Изменён: 22 Апреля 2025, 12:01:45 от Simple-Scada »