Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2012, 19:32   #1
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
Вопрос Как искать компоненты по признаку?

Здравствуйте!
Как найти на форме неизвестное кол-во компонентов по определённому признаку, например найти все однотипные компоненты или все с идентичным Tag ?
DeveloPerchik вне форума Ответить с цитированием
Старый 16.07.2012, 19:47   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

У контейнеров есть методы перебора компонент на форме. Ну или контролов.

Код:
for i:=0 to Form12.ComponentCount -1 do
begin
  if (Components[i] is TEdit) then
  begin
    (Components[i] as TEdit).Tag := ололо
  end;
end;
Код:
for i:=0 to Form12.ControlCount -1 do
begin
  if (Controls[i] is TEdit) then
  begin
    (Controls[i] as TEdit).Tag := ололо
  end;
end;
Не обязательно перебирать все типы. Достаточно найти общего предка с признаками, присущими всем, нужным вам, компонентам.
Человек_Борща вне форума Ответить с цитированием
Старый 16.07.2012, 19:58   #3
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
По умолчанию

Спасибо за быстрый ответ. Но хотелось бы без перебора всех, тк на форме может быть 50-100-200компонентов, а назначить что-то нужно только примерно 20%, то есть 80% перебора получается излишним. Встроенной функции какой-нить такой нет?

Хотел от обратного пойти - компоненту назначить на событие OnCreate запрос нужных параметров, но увы, у компонентов нет такого события.

Есть другие предложения?
DeveloPerchik вне форума Ответить с цитированием
Старый 16.07.2012, 20:06   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Встроенной функции какой-нить такой нет?
если бы и была, то все равно нужно перебирать все компоненты.
ибо нельзя заранее сказать какой из них тот или не тот.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.07.2012, 20:10   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то есть 80% перебора получается излишним.
Во-первых: С чего ты взял что будет падение скорости?
Во-вторых: Заведи себе список типа TComponentList, в который прикрепляй компоненты при их создании (это в том случае если создаешь динамически).
Несколько таких списков дадут наборы групп компонентов, собранных по определенному признаку. Если будешь проходить по ним перебор получится меньше.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.07.2012, 12:11   #6
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Во-вторых: Заведи себе список типа TComponentList, в который прикрепляй компоненты при их создании (это в том случае если создаешь динамически).Несколько таких списков дадут наборы групп компонентов, собранных по определенному признаку. Если будешь проходить по ним перебор получится меньше.
Это тоже понятно, просто думал может есть какая-то готовая встроенная функция. Спасибо.
DeveloPerchik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где и как, правильно, искать литературу в сети? Хорошие инет ресурсы. Человек_Борща Общие вопросы по программированию, компьютерный форум 7 14.04.2012 03:07
Как заставить искать TSearchFind из стандартных Actions в RichEdit? munthrekosh Общие вопросы Delphi 1 29.03.2012 20:16
FindFirst - как искать ВСЕ файлы? iskurt Общие вопросы C/C++ 3 18.06.2010 23:23
Как искать ячейки по тексту, который находится в ячейке рядом? PurpleSky Microsoft Office Excel 1 02.02.2010 10:08
Как искать метод, свойство.... Elm0 Свободное общение 8 29.05.2008 10:12