Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++ Builder] Как передать объект в функцию?


Автор: redrover 6.12.2009, 20:41
У меня есть несколько объектов типа TShar на форме. 
Нужно перекрасить их в случае клика правой кнопкой мыши.

Код

void color ( int num )
{
     if ( num == 1 )
     {
        if ( Shape1->Brush->Style != bsClear ) {
        Shape1->Brush->Style = bsClear;
        }
        else  {
        Shape1->Brush->Style = bsSolid;
        Shape1->Brush->Color = clAqua;
        }
    }
    if ( num == 2 ) {
        if ( Shape2->Brush->Style != bsClear ) {
        Shape2->Brush->Style = bsClear;
        }
        else  {
        Shape2->Brush->Style = bsSolid;
        Shape2->Brush->Color = clAqua;
        }
    }
        if ( num == 3 ) {
        if ( Shape3->Brush->Style != bsClear ) {
        Shape3->Brush->Style = bsClear;
        }
        else  {
        Shape3->Brush->Style = bsSolid;
        Shape3->Brush->Color = clAqua;
        }
    }
        if ( num == 4 ) {
        if ( Shape4->Brush->Style != bsClear ) {
        Shape4->Brush->Style = bsClear;
        }
        else  {
        Shape4->Brush->Style = bsSolid;
        Shape4->Brush->Color = clAqua;
        }
    }
        if ( num == 5 ) {
        if ( Shape5->Brush->Style != bsClear ) {
        Shape5->Brush->Style = bsClear;
        }
        else  {
        Shape5->Brush->Style = bsSolid;
        Shape5->Brush->Color = clAqua;
        }
    }
        if ( num == 6 ) {
        if ( Shape6->Brush->Style != bsClear ) {
        Shape6->Brush->Style = bsClear;
        }
        else  {
        Shape6->Brush->Style = bsSolid;
        Shape6->Brush->Color = clAqua;
        }
    }
}


Сейчас я создал функцию с привязкой к номеру шарика. Хочется избежать таких объемных внутренностей.

Автор: 586 6.12.2009, 22:51
Код
void color ( int num )
{
     String compName = "Shape" + IntToStr(num);
     TShape *sh = dynamic_cast<TShape*>(Form1->FindComponent(compName));
     if(!sh) {
         throw Exception(compName + " not found");
     }
    if ( sh->Brush->Style != bsClear ) {
        sh->Brush->Style = bsClear;
    }
    else  {
        sh->Brush->Style = bsSolid;
        sh->Brush->Color = clAqua;
    }
}


Добавлено через 7 минут и 56 секунд
Код
void color (TShape *sh)
{
    if ( sh->Brush->Style != bsClear ) {
        sh->Brush->Style = bsClear;
    }
    else  {
        sh->Brush->Style = bsSolid;
        sh->Brush->Color = clAqua;
    }
}


//....

color(Shape1);
color(Shape2);

Автор: redrover 6.12.2009, 23:00
Спасибо.)
Можно и так.)))

Код

void CGame::color( TShape *Shape )
{
    if ( Shape->Brush->Style != bsClear )
    {
        Shape->Brush->Style = bsClear;
    }
    else
    {
        Shape->Brush->Style = bsSolid;
        Shape->Brush->Color = clAqua;
    }
}


Автор: 586 6.12.2009, 23:07
Цитата(redrover @  6.12.2009,  23:00 Найти цитируемый пост)
Можно и так.)))

Знаю. Пока не прочёл повторно заголовок темы - так и не понял, чего требовалось.

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