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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2010, 00:08   #1
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию обращения к edit по имени

Здравствуйте
Есть у меня 16 едитов с именами argument1..argument16, как можно обратится к ним в цыкле по очереди ?

вот что примерно должно выйти:
Код:
for i:=1 to 16 do 
argument[i].text:=iniConstant.ReadString('General', 'argument'+inttostr(i),'');
естестве но это не работает)) это для отображения моих мыслей

по номеру находил в рунете, но если у меня не стандартное название как быть тогда ? очень буду благодарен за помощь
designer999 вне форума Ответить с цитированием
Старый 27.12.2010, 00:22   #2
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Дык к любым контролам можно в цикле обращаться.
Можно так:

Код:
for i := 0 to Form1.ControlCount - 1 do
begin
  if (Form1.Controls[i] is TEdit) then TEdit(Form1.Controls[i]).Text := 'Оно работает!'
end;
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 27.12.2010, 00:25   #3
VladimirVB
Форумчанин
 
Аватар для VladimirVB
 
Регистрация: 12.10.2008
Сообщений: 131
По умолчанию

Чтобы найти все Edit на форме, потребуется просмотреть свойство Components формы. Свойство ComponentCount определяет количество компонентов в списке Components. Первый компонент из этого списка имеет индекс 0. а последний компонент — индекс ComponentCount-1.

В следующем примере происходит очистка всех шестнадцати Edit

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Cnt: Integer;
begin
  for Cnt := 0 to Pred(ComponentCount) do
  begin
    if Components[Cnt] is TEdit then
      TEdit(Components[Cnt]).Text := '';
  end;
end;
VladimirVB вне форума Ответить с цитированием
Старый 27.12.2010, 00:29   #4
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию

но это все едиты будут проверятся, а мне нужно только те что имеют название argument+индекс
designer999 вне форума Ответить с цитированием
Старый 27.12.2010, 00:37   #5
VladimirVB
Форумчанин
 
Аватар для VladimirVB
 
Регистрация: 12.10.2008
Сообщений: 131
По умолчанию

Код:
Uses StrUtils;

procedure TForm1.Button1Click(Sender: TObject);
var
  Cnt: Integer;
begin
  for Cnt := 0 to Pred(ComponentCount) do
  begin
    if Components[Cnt] is TEdit then
      if ContainsText(TEdit(Components[Cnt]).Name, 'argument') then
        TEdit(Components[Cnt]).Text := '';
  end;
end;
VladimirVB вне форума Ответить с цитированием
Старый 27.12.2010, 01:16   #6
designer999
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 187
По умолчанию

VladimirVB спс большое
designer999 вне форума Ответить с цитированием
Старый 27.12.2010, 01:30   #7
XeruH
Форумчанин
 
Регистрация: 17.09.2010
Сообщений: 229
По умолчанию

А еще есть FindComponent
Правильно заданный вопрос - половина ответа!
XeruH вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема обращения к элементу класса. Alexcomeback Общие вопросы по Java, Java SE, Kotlin 2 23.10.2010 15:17
Параллельные обращения к mysql sunnmas БД в Delphi 1 12.10.2009 22:07
Ошибка обращения к памяти Zeraim Общие вопросы Delphi 7 01.12.2008 17:08
программа мониторинга обращения к дисковой подсистеме Vasya Софт 1 24.10.2007 21:20
Как перехватить обращения к принтеру? Classic Win Api 2 16.08.2007 11:07