Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Теги у обьектов


Автор: Imidazol 2.10.2007, 00:19
Как я могу обратиться именно к нужному TImage по очереди, если у меня созданы такие обьекты, как Image1,Image2,Image3. Как я могу достать эти цифры после слова Image? 

Автор: smoke_man 2.10.2007, 00:49
Можно использовать два способа.
Способ 1:
Код

    for(int i=0;i<ComponentCount;i++)
       if(Components[i]->Name!= "Image1")
            ((TControl *)Components[i])->Visible = false;

Способ 2:Использовать свойство Tag:
Код

    for(int i=0;i<ComponentCount;i++)
       if(Components[i]->Tag==1)
            ((TControl *)Components[i])->Width = 100;

Автор: Cheater 2.10.2007, 02:13
Лучше так: 
Код

String ClassName="TImage";
for(int i=0; i< this->ComponentCount; i++)

{
    if(!((TObject*)this->Components[i])->ClassNameIs(ClassName))
        continue;

    TImage*img = dynamic_cast<TImage*>(this->Components[i]);
    img-> // ну а тут уже получаем доступ до первой картинки на форме
}


            

Автор: Lazin 2.10.2007, 07:51
Cheater, зачем так сложно, можно сильно упростить
Код

for(int i=0; i< this->ComponentCount; i++)
{
    TImage*img = dynamic_cast<TImage*>(this->Components[i]);
    if (img != NULL){//этот код выполняется только для объектов типа имадж
         img-> // ну а тут уже получаем доступ до первой картинки на форме
    }
}


кстати тут уже говорили про свойство Tag, я немного добавлю: св-во Tag компонента может использоваться по усмотрению программиста, библиотека ВЦЛ его не использует, по этому можно к примеру, для каждого объекта Image[N] задать свойство Tag = N и далее в коде, при получении указателя на объект, можно его идентифицировать. В принципе это можно делать и по другому, но так наиболее шустро должно работать.

Добавлено @ 07:55
Еще можно инициализировать массив 
Код

TImage* array[] = {Image1, Image2, Image3, NULL};

и далее работать с ним
Код

for (TImage** i = array; *i; ++i)
{
  (*i)->Canvas->...
}

Автор: Imidazol 2.10.2007, 08:30
В самом деле можно было догадатся.  Спасибо всем.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)