Есть такая функция. Ищет родителя заданного компонента, перебирает список и возвращает индекс искомого компонента. Функция прошла многочисленные тесты и вполне работоспособна.
{ функция, возвращающая индекс искомого компонента в списке родителя; возвращает -1 при отсутствии компонента }function IndexInParent(vControl: TControl): integer; var ParentControl: TWinControl;begin {делаем "слепок" родителя через базовой класс на предмет доступности }ParentControl := TForm(vControl.Parent);if (ParentControl <> nil) thenbeginfor Result := 0 to ParentControl.ControlCount - 1 dobeginif (ParentControl.Controls[Result] = vControl) then Exit;end;end;{ если мы уж попали в это место, то либо не найден компонент, либо компонент не имел родителя }Result := -1;end; |