Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Циклический опрос компонентов

Delphi , Синтаксис , Циклы

Циклический опрос компонентов

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


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 и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Циклы ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
16.04.2024 23:00:33/0.001060962677002/0