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


Автор: SeriousMaksi 7.5.2009, 22:59
Здравствуйте.
Нужно не явно обратиться к объекту Button1, принадлежащему TForm1, через класс TButton.
Среда: Turbo C++ explorer 2005.

Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage (Button1 ->Caption);
ShowMessage (TButton(Sender).Caption);
}


Первое сообщение работает правильно, с выводом "Button1", а второе выводит пустую строку. Почему?

Автор: 586 7.5.2009, 23:25
Код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    //ShowMessage (Button1->Caption);

    // небезопасное приведение
    ShowMessage ((TButton*)Sender)->Caption);

    // безопасное приведение (b равен 0, если Sender - не может быть кнопкой)
    if(TButton *b = dynamic_cast<TButton*>(Sender))
        ShowMessage(b->Caption);
}

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