Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Найти позицию каждого элемента формы

84K
21 июня 2015 года
Arnie
3 / / 21.06.2015
На форме есть множество элементов (TShape, TEdit, TButton... и т.д.). Среди всех этих элементов найти только TShape элементы и занести их координаты в переменную (массив). Подскажите как? Перебирать вручную не выход, поскольку элементов на форме довольно таки много, и, возможно, в будущем станет еще больше. По этому желательно каким-то образом перебрать все элементы через цикл, среди них выбрать только TShape и занести их координаты (хотя бы только top координату) в переменные. Буду очень благодарен за помощь)) Заранее спасибо!))
1
21 июня 2015 года
kot_
7.3K / / 20.01.2000
Например создать вектор и помещать туда элементы нужных типов при создании. Не безопасно, но работать будет.
326
21 июня 2015 года
sadovoya
757 / / 19.11.2005
Билдера у меня нет, вот на Дельфи. Код находит все TShape на форме и пишет их координаты top в memo:
 
Код:
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;
А в Билдере цикл по такой будет аналогичной схеме:
 
Код:
for(int i = 0; i < ComponentCount; i++)
{
  if( Components[i]->ClassNameIs("TShape") )
  {
   //ваши действия с использованием ((TShape *)Components[i])->top
  }
}
P.S. Массив компонентов Components предусмотрен в VCL для задач, подобной вашей.
P.P.S. Зря вы вопрос задали в теме общих вопросов. Недооцениваете средства VCL?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог