Пожалуйста, включите JavaScript для просмотра этого сайта.

Скрипты Simple-Scada

История: Классы > Списки

Список объектов (TM_List)

Пред. Вверх След. Еще

Класс TM_List можно использовать для хранения списка указателей (на объекты, переменные и т.д.). Данный класс обладает следующими свойствами и методами:

Метод

Описание

function Add(Item: Pointer): Integer;

Добавляет указатель Item в список

procedure Insert(Index: Integer; Item: Pointer);

Добавляет указатель Item в список в позицию Index

procedure Delete(Index: Integer);

Удаляет из списка элемент с указанным индексом

function Remove(Item: Pointer): Integer;

Удаляет из списка указатель Item. Если список содержит несколько таких указателей, то удаляется только первый. Возвращает индекс указателя в списке до его удаления или -1, если указатель не существует в списке.

procedure Exchange(Index1, Index2: Integer);

Меняет местами элементы в указанных позициях

function Extract(Item: Pointer): Pointer;

Извлекает указатель из списка

procedure Move(CurIndex, NewIndex: Integer);

Перемещает указатель из позиции CurIndex в позицию NewIndex

procedure Clear;

Очищает список

function First: Pointer;

Возвращает первый указатель из списка. Если в списке нет указателей, то будет выдано исключение.

function Last: Pointer;

Возвращает последний указатель из списка. Если в списке нет указателей, то будет выдано исключение.

function IndexOf(Item: Pointer): Integer;

Возвращает индекс указателя Item в списке. Возвращает -1, если такой указатель не найден.

procedure Pack;

Удаляет все нулевые (равные nil) указатели из списка

 

Свойство

Описание

property Items[Index: Integer]: Pointer;

Возвращает указатель с индексом Index из списка. Например myList.Items[3] вернет указатель с индексом 3. Это свойство по-умолчанию, поэтому можно использовать короткую запись, например: myList[3].

property Count: Integer;

Возвращает количество указателей в списке

 

Пример использования

Допустим нам нужно создать список объектов, добавлять в него разные объекты и работать с ними. Тогда можно создать новый глобальный модуль и объявить в нем список:

interface
 
var
  myList: TM_List;          // объявляем список с именем myList
 
implementation
 
initialization              // во время запуска проекта
  myList := TM_List.Create; // создаём список
 
finalization                // во время выключения проекта
  FreeAndNil(myList);       // !!! обязательно удаляем список
 
end.

Теперь список myList можно использовать в любом скрипте проекта.

Пример добавления указателей в список

begin
  myList.Add(Button1);     // добавляем кнопку Button1 в список
  myList.Add(Image1);      // добавляем изображение Image1 в список
  myList.Add(Text1);       // добавляем текст Text1 в список
end.

Пример поиска в списке

begin
  if myList.IndexOf(Image1) > -1 then
    Log_Add('Изображение Image1 есть в списке')
  else
    Log_Add('Изображение Image1 не найдено списке');
end.

Пример перебора элементов списка

var
  I: Integer;
  aItem: Pointer;
begin
  // проходим в цикле по всем элементам списка
  for I := 0 to myList.Count - 1 do
  begin
    aItem := myList[I];                  // берём очередной элемент из списка в aItem
    if TObject(aItem) is TM_Image then   // если это изображение
      TM_Image(aItem).Visible := False;  // то скрываем его
  end;
end.