Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обращение к элементам формы в цикле 
:(
    Опции темы
Avtor
Дата 4.9.2006, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 21.7.2006

Репутация: нет
Всего: нет



Всем доброго понедельника. Интересует такой вопрос: на форме есть несколько элементов TLabel - Labe1, Label2, Label3 и т.д. Можно ли к ним как-то обращаться в цикле - ну что-то типа Label[i]?
PM MAIL   Вверх
Greeen
Дата 4.9.2006, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: нет
Всего: 18



Да, объявляешь массив TLabel* lbl[20];
и далее динамически создаешь их
Код

for(int i=0; i<20; i++)
{
lbl[i] = new TLabel(this);
lbl[i]->Parent = this;
...
}

Если они уже лежат на форме то можно так
Код

for(int i=0; i < ComponentCount; i++)
{
if(Components[i]->ClassNameIs("TLabel"))
   ((TLabel*)Components[i])->...
}



--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Avtor
Дата 5.9.2006, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 21.7.2006

Репутация: нет
Всего: нет



А если необходимо пройтись по всем элементам принадлежащим не всей форме, а только панели TPanel *Panel1 на этой форме? Или это невозможно?

Это сообщение отредактировал(а) Avtor - 5.9.2006, 10:15
PM MAIL   Вверх
_hunter
Дата 5.9.2006, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



возможно: проходьш по всем элементам и смотриш на их тип smile


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Avtor
Дата 5.9.2006, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 21.7.2006

Репутация: нет
Всего: нет



Не подойдет - такие же типы есть и на самой форме.
PM MAIL   Вверх
Greeen
Дата 5.9.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: нет
Всего: 18



Avtor, проверяй его родителя... if(Label1->Parent == Panel1) ...


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Bima
Дата 5.9.2006, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Если динамически не создаешь элементы на форме, то обращатся к ним только через поиск нужного компонента. Например, нужно записать строку в i - Label, т.е. если i=3, то нужно записать в Label3 строку.
Код

int i=3;
AnsiString MyComp;
AnsiString MyStroka="bla-bla-bla";
MyComp="Label"+IntToStr(i);
for(int i=0; i < ComponentCount; i++)
   {
   if (((TLabel*)Components[i])->Name==MyComp) ((TLabel*)Components[i])->Caption=MyStroka;
   }

можно конечно создать динамически все компоненты, но тогда кода слишком много будет.

Добавлено @ 11:03 
Блин, про цикл забыл smile
вот код с циклом:
Код

AnsiString MyComp;
AnsiString MyStroka;
for (int i=1; i<5; i++)
   {
   MyStroka=IntToStr(i)+" raza bla-bla-bla";
   MyComp="Label"+IntToStr(i);
   for(int i=0; i < ComponentCount; i++)
      if (((TLabel*)Components[i])->Name==MyComp) ((TLabel*)Components[i])->Caption=MyStroka;
   }


Это сообщение отредактировал(а) Bima - 5.9.2006, 11:06


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0889 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.