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 для тех кнопок, в которых вы хотите использовать общий обработчик события. [001497]