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

Сидит вечером программист у компота и третий час подряд кликает на свою мышь. Сзади подходит жена:
- Дорогой, может меня лучше покликаешь?
Программист, бешено колотя кулаком по мыши:
- Блин, кликалка у меня не работает.


procedure TForm1.FormCreate(Sender: TObject);
var
  I: integer;
begin
  for I:= 0 to ComponentCount -1 do
    if (Components[I] IS TEdit) then
      (Components[I] AS TEdit).{Вашпараметр} := {ваше значение};
end; 

Если вам необходимо идентифицировать конкретный набор edit-компонентов, поместите их на панели и сделайте примерно так:


procedure TForm1.FormCreate(Sender: TObject);
var
  I: integer;
begin
  with MyPanel do
    for I:= 0 to ControlCount -1 do
      if (Controls[I] IS TEdit) then
        (Controls[I] AS TEdit).{Вашпараметр} := {Ваше значение};
end;

В контексте примера, Edit1, Edit2 и т.д. есть то же самое, что и Edit[1], Edit[2]. Если вы хотите иметь доступ к серии элементов управления как к элементам массива, поместите их в TList.


MyArr := TList.Create;
MyArr.Add(Edit1);
MyArr.Add(Edit2);

...

For i := 0 To MyArr.count - 1 Do
  (MyArr.items[i] As TEdit).Enabled := False;

MyArr.Free;


procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to ComponentCount -1 do
    if Components[I] is TEdit then
      TEdit(Components[I]).Whatever := 10;
end;

Для получения доступа используйте:


TButton(mylist.items[i]).property := sumpin; 

или


TButton(mylist.items[i]).method; 

Это хорошее решение для пакетной обработки компонентов или для получения доступа при линейном способе. Для решения вашей проблемы есть еще более легкое решение, которое требует предварительной работы в режиме проектирования. Установите свойство tag и получите преимущество в том, что все компоненты являются производными от TComponent и имеют это свойство.


Procedure TMyForm.MyButtonHandler(Sender: TObject);
Begin
  Case (Sender As TComponent).Tag Of
    1: { что-то делаем }
    2: { делаем что-то еще }
    .
    .
  End;
End;

Просто укажите в событии OnClick на MyButtonHandler для тех кнопок, в которых вы хотите использовать общий обработчик события.

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