Найти позицию каждого элемента формы
На форме есть множество элементов (TShape, TEdit, TButton... и т.д.). Среди всех этих элементов найти только TShape элементы и занести их координаты в переменную (массив). Подскажите как? Перебирать вручную не выход, поскольку элементов на форме довольно таки много, и, возможно, в будущем станет еще больше. По этому желательно каким-то образом перебрать все элементы через цикл, среди них выбрать только TShape и занести их координаты (хотя бы только top координату) в переменные. Буду очень благодарен за помощь)) Заранее спасибо!))
Например создать вектор и помещать туда элементы нужных типов при создании. Не безопасно, но работать будет.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to Form1.ComponentCount - 1 do
if Components[i].ClassNameIs('TShape') then
memo1.Lines.Add(IntToStr(TShape(Components[i]).top));
end;
var
I: Integer;
begin
for I := 0 to Form1.ComponentCount - 1 do
if Components[i].ClassNameIs('TShape') then
memo1.Lines.Add(IntToStr(TShape(Components[i]).top));
end;
Код:
for(int i = 0; i < ComponentCount; i++)
{
if( Components[i]->ClassNameIs("TShape") )
{
//ваши действия с использованием ((TShape *)Components[i])->top
}
}
{
if( Components[i]->ClassNameIs("TShape") )
{
//ваши действия с использованием ((TShape *)Components[i])->top
}
}
P.P.S. Зря вы вопрос задали в теме общих вопросов. Недооцениваете средства VCL?