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


Автор: Ofer 11.11.2008, 10:12
Есть несколько динамически созданных объектов. У них одинаковый обработчик клика мышкой, но отличаеться одним оператором. На Delphi такую проблему решил бы так

Код

procedure TForm1.ButtonClick(Sender TObject);
begin
  if (Sender as TButton).Name = 'Button1' then
........
end;


Проблема в (Sender as TButton). Чем на Builder`e заменяеться as?

Автор: mrbrooks 11.11.2008, 10:33
Код

TButton *btn = dynamic_cast<TBuntton*>(Sender);
switch (btn->Tag) //свойство Tag делай уникальным
{
...
}

Автор: smoke_man 11.11.2008, 10:37
можно так:
Код

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


Автор: mrbrooks 11.11.2008, 10:43
smoke_man, для обработки десяти кнопок это не годится

Добавлено через 2 минуты и 40 секунд
честно говоря вообще не понимаю зачем так делать  smile 

Автор: Ofer 11.11.2008, 10:49
Я наверно не точно поставил вопрос. :(
Как определить от какой кнопки произошло событие, если на них всех назначен один и тот же обработчик?

Автор: smoke_man 11.11.2008, 10:50
mrbrooks, если компонентов много -  то полностью согласен.

Автор: mrbrooks 11.11.2008, 10:53
Ofer, 
дык елки палки. в обработчике события нажатия кнопки напиши:

Код


TButton *btn = dynamic_cast<TBuntton*>(Sender);
ShowMessage(btn->Caption); //будет метка нажатой кнопки
                                                 //по свойству Tag - ты можешь отследить какую именно нажал кнопку!


Что еще может быть непонятней?

Автор: THandle 11.11.2008, 10:53
Ofer, ну так проверяй либо по имени, либо как тебе предложили по уникальному Tag.

Добавлено @ 11:04
Ofer, если не очень понятно, то:

Код

TButton *btn = dynamic_cast<TButton*>(Sender);


Вот этот самый btn будет тем же самым что вернет конструкция:
Код


(Sender as TButton)

Автор: Ofer 11.11.2008, 11:08
THandle, правильно говориш - не очень понятно. Но я уже все сам понял. Вобщем, на ручнике я ))))
Всем спасибо!!  smile 

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