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

Ваш аккаунт

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

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

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

Можно ли получить доступ к свойствам объекта через, например, строку с его названием?

3.5K
11 июня 2004 года
Hawker
14 / / 22.11.2003
Например,есть 10 лейблов (label). Нужно им всем присвоить надписи (их свойствам caption)(разные). Можно это сделать циклом, обращаясь к массиву строк с их названиями, например, или нет?
6.3K
11 июня 2004 года
xTrim
38 / / 11.06.2004
например так:
AnsiString names[5] = {"Label1","Label2","Label3","Label4","Label5"};
AnsiString captions[5] = {"Label1","Label2","это 3","и 4","и еще 5"};
for(int i=0;i!=5;i++)
{
TLabel* l = dynamic_cast<TLabel*>(FindComponent(names));
l->Caption = captions;
}
7.4K
11 июня 2004 года
burashka
12 / / 02.06.2004
Цитата:
Originally posted by Hawker
Например,есть 10 лейблов (label). Нужно им всем присвоить надписи (их свойствам caption)(разные). Можно это сделать циклом, обращаясь к массиву строк с их названиями, например, или нет?


 
Код:
for (int i=0;i<Form1->ComponentCount;i++)
   {
   ShowMessage(AnsiString(Form1->Components->ClassName())+" "+Form1->Components->Name);
   }

мысль я думаю ясна :)
пример выдаёт мессаги с Типами и Именами всех компонент лежащих на форме Form1. Соответственно имеешь полную свободу действий - всё перебираешь,с компонентами с нужным признаком (тип, или тэг) делаешь что тебе надо. Так же можно поступать перебирая все подчинённые компоненты Панелей и Групп, ну и т.д.
3.5K
12 июня 2004 года
Hawker
14 / / 22.11.2003
А можно просто (TLabel*)FindComponent(...)?
7.4K
12 июня 2004 года
burashka
12 / / 02.06.2004
Цитата:
Originally posted by Hawker
А можно просто (TLabel*)FindComponent(...)?


естественно, хотя ваще динамиккаст безопаснее считается,но ваще и так сойдёт, лично у меня проблем не возникало.

6.3K
14 июня 2004 года
xTrim
38 / / 11.06.2004
если в цикл вставить проверку
AnsiString names[5] = {"Label1","Label2","Label3","Label4","Edit1"};
AnsiString captions[5] = {"Label1","Label2","это 3","и 4","и еще 5"};
for(int i=0;i!=5;i++)
{
TLabel* l = dynamic_cast<TLabel*>(FindComponent(names));
// если будет стоять
// TLabel* l = (TLabel*)FindComponent(names);
// то следующее условие не сработает т.е. в l загониться не корректная информация
// а оно вам надо?
if(!l) continue;
l->Caption = captions;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог