Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Массив компонентов

Обувь для программистов - майкроссовки.

Возможно ли создание массива компонентов? Для показа статуса я использую набор LED-компонентов и хотел бы иметь к ним доступ, используя массив.

Прежде всего необходимо объявить массив:


{10 элементов компонентного типа TLed}
LED : array[1..10] of TLed;

При необходимости динамического создания LED-компонентов организуйте цикл, пример которого мы приводим ниже:


for counter := 1 to 10 do
begin
  LED[counter]:= TLED.Create;
  LED[counter].top := ...
  LED[counter].Left := ...
  LED[counter].Parent := Mainform;   {что-то типа этого}
end;

Если компоненты уже присутствуют на форме (в режиме проектирования), сделайте их элементами массива, например так:


leds := 0;
for counter := 0 to Form.Componentcount do
begin
  if (components[counter] is TLED) then
  begin
    inc(leds);
    LED[leds] := TLED(components[counter]);
  end
end;

Тем не менее у нас получился массив со случайным расположением LED-компонентов. Я предлагаю назначить свойству Tag каждого LED-компонента порядковый номер его расположения в массиве, а затем заполнить массив, используя это свойство:


for counter := 0 to Form.Componentcount do
begin
  if (components[counter] is TLED) then
  begin
    LED[Component[counter].tag] := TLED(components[counter]);
  end
end;

Если вам нужен двухмерный массив, то для формирования индекса понадобится другая хитрость, например, хранение в свойстве Hint информации о времени создания компонентов.

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay