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

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

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

vladka767

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

Я написал скрипт, но он работает не так как мне нужно, а именно после удаления строки и дальнейшего добавления (деактивировал/активировал соответствующий флажок), она добавляется в конец, т.к. нельзя явно указать индекс добавляемой строки.

pan2000

  • Постоялец
  • ***
  • Сообщений: 225
    • Просмотр профиля
Re: Динамический список
« Ответ #1 : 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 строк во вложении.

vladka767

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: Динамический список
« Ответ #2 : 17 Июля 2019, 19:33:28 »
Да, спасибо, до меня уже дошло. Правда я про метод Clear недочитал и удалял каждую строку по одной, теперь оптимизирую)