Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: vladka767 от 11 Июля 2019, 19:18:54

Название: Динамический список
Отправлено: vladka767 от 11 Июля 2019, 19:18:54
Добрый день.
Есть задача : "экране 1" список из n строк, которые отображаются в определенном порядке.
На "экране 2" n флажков, каждый из которых отвечает за отображение той или иной строки.
Вопрос :
Как организовать скрытие/отображение строк в списке на "экране 1" в зависимости от активированных флажков?
При чем строки всегда должны быть в одном порядке, это важно.

Я написал скрипт, но он работает не так как мне нужно, а именно после удаления строки и дальнейшего добавления (деактивировал/активировал соответствующий флажок), она добавляется в конец, т.к. нельзя явно указать индекс добавляемой строки.
Название: Re: Динамический список
Отправлено: pan2000 от 11 Июля 2019, 20:46:04
   Здравствуйте, vladka767!

Только переписыванием списка заново. Для небольшого списка можно сязать флажки с разрядами переменной iStringSelect,
а в качестве источника строк использовать предварительно заполненный список ComboBox1, результат в ComboBox2.
Скрипт по изменению значения iStringSelect:
Код: (delphi)
var i: integer;
begin
  ComboBox2.Clear;    // очистить список
  for i := 0 to 15 do
    if GetBit(iStringSelect.AsInt64, i) then
      ComboBox2.AddItem(ComboBox1.Items[i].Text);  // добавить отмеченные строки
end.

Пример для 64 строк во вложении.
Название: Re: Динамический список
Отправлено: vladka767 от 17 Июля 2019, 19:33:28
Да, спасибо, до меня уже дошло. Правда я про метод Clear недочитал и удалял каждую строку по одной, теперь оптимизирую)