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

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

Автор Тема: Вопрос при написании скрипта  (Прочитано 9494 раз)

niyaz

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Вопрос при написании скрипта
« Ответ #15 : 28 Января 2020, 22:50:51 »
Добрый вечер. Благодарю за ответ.
Получается для того, чтобы цвета и текст кнопки менялись, которые мы указали на разных состояниях в редакторе, необходимо  связать с кнопкой какую либу переменную? Спасибо.
« Изменён: 28 Января 2020, 22:56:04 от niyaz »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Вопрос при написании скрипта
« Ответ #16 : 29 Января 2020, 11:12:13 »
Да, кнопка меняет состояния в соответствии со значениями связанной с ней переменной.

niyaz

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Вопрос при написании скрипта
« Ответ #17 : 28 Марта 2020, 19:37:43 »
Здравствуйте. Как получить значения выбранного из выпадающего списка ComboBox ? В списке есть, например горох, пшеница, овес. Необходимо, когда пользователь выбрал какую-нибудь из них, например горох в переменную записалось слово горох. Как это реализовать?
« Изменён: 29 Марта 2020, 03:40:59 от niyaz »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Re: Вопрос при написании скрипта
« Ответ #18 : 29 Марта 2020, 21:28:31 »
Здравствуйте.

Получить текст выбранной строки раскрывающегося списка можно через свойство Text.
Назначьте на событие OnDataChange раскрывающегося списка следующий код:
Код: (delphi)
begin
  myStrVar.Value := myComboBox.Text;   
end.
, где myStrVar - это переменная в которую будет записан текст выбранной строки;
  myComboBox - это сам раскрывающийся список.
« Изменён: 29 Марта 2020, 21:29:37 от Simple-Scada »

niyaz

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Вопрос при написании скрипта
« Ответ #19 : 30 Марта 2020, 02:47:19 »
Спасибо большое. Подскажите пожалуйста, как сделать так, чтобы слова в в ячейке таблицы переходили на следующую строку(слова находятся в одной ячейке таблицы).

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Вопрос при написании скрипта
« Ответ #20 : 31 Марта 2020, 10:46:57 »
Здравствуйте.
Возможности переноса текста в ячейках таблицы нет.

niyaz

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Вопрос при написании скрипта
« Ответ #21 : 02 Октября 2020, 23:20:02 »
Здравствуйте, возникала следующая проблема.
Написал скрипт по изменению значения переменной выпадающего списка, который вызывает следующий скрипт
Код: (delphi)
begin
  if DataSet.Tag = 8 then         // если набор данных помечен тегом 8
  begin
    comboBoxIdDriver.Clear;                 // очищаем список список
      if DataSet.IsEmpty then Exit;  // прерываем выполнение, если набор данных пуст
      while not DataSet.EOF do       // проходим в цикле по всем строкам полученного набора данных
        begin
          comboBoxIdDriver.AddItem(DataSet.Fields[0].AsStr);  // добавляем строку из первой колонки набора данных в список comboBoxDriver
          DataSet.Next;                // переходим к следующей строке набора данных
        end;
  end;
end.
Данные в список вносятся, количество строк в списке может меняться. Если в списке выбрать вторую строку, затем вызвать скрипт представленный выше, данные в списке отображаются некорректно. Первая строка остается пустой, приходится выбирать необходимое значение из списка. Можно ли это как это исправить и в чем может заключаться проблема?
Описание скриншотов: выбрал значение в правом выпадающем списке, который вызывал скрипт  заполнения левого списка, выбрал вторую строку из левого списка. Затем еще раз выбрал значения из правого списка, в данном случае в левый список должно записаться только 1 значение, первая строка остается пустой, а нужное значение записывается в следующее. 
« Изменён: 03 Октября 2020, 12:21:25 от niyaz »

pan2000

  • Постоялец
  • ***
  • Сообщений: 226
    • Просмотр профиля
Re: Вопрос при написании скрипта
« Ответ #22 : 04 Октября 2020, 02:51:19 »
      Здравствуйте.

После выбора строки из более длинного списка и обновлении списка на более короткий, переменная индекса выбранной строки (авто-генерируемая или основная) сохранила значение и стала указывать на несуществующую строку списка.
Для указания индекса следует явно использовать основную переменную и обнулять при выполнении процедуры Clear:
Код: (delphi)
 . . .
    comboBoxIdDriver.Clear;                 // очищаем список список
    comboBoxIdDriverIndex.Value := 0;       // устанавливаем индекс выбранной строки на начало списка
. . .
При удалении строк из списка может возникнуть аналогичная ситуация - пустая строка выбора, причем основная переменная-индекс после удаления строки перестает быть непрерывной. Так что для исключения "артефакта пустой строки" при удалении строк наиболее приемлемый способ это полная перезапись списка с коррекцией переменной-индекса.
Посмотреть поведение списков с переменной и авто-переменной можно в проекте из вложения.

niyaz

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Вопрос при написании скрипта
« Ответ #23 : 06 Октября 2020, 00:01:22 »
Спасибо за ответ и примеры, очень помогло.
« Изменён: 06 Октября 2020, 17:11:04 от Simple_Scada »