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