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


Автор: ZufuS 13.7.2006, 21:37
Как сделать чтобы событие одной компоненты активировало событие другой компоненты? 

Автор: 586 13.7.2006, 22:44
Берешь и вызываешь функцию, которая отвечает за событие.
Код
// Button1->OnClick
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 MessageBoxA(Handle, "Hello world!", "", 0);
}
//---------------------------------------------------------------------------

// Button2->OnClick
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 Button1Click(Sender);
}

Если Sender не используешь, можешь его передать, как NULL 

Допустим, ты не знаешь, какая ф-ция отвечает за событие. Можно запустить указатель на функцию, указанный в событии:
Код
// Button1->OnClick
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 MessageBoxA(Handle, "Hello world!!!", "", 0);
}

// Button2->OnClick
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 if(Button1->OnClick)    // проверка, что обр. события указан
  (Button1->OnClick)(Sender);
}

всегда проверяй, есть ли обработчик события, иначе получишь Access Violation (ошибку приложения) 

Автор: ZufuS 14.7.2006, 00:25
Спасибо, а что такое Sender? 

Автор: 586 14.7.2006, 00:37
Sender - это указатель на комнонент, который вызвал событие.
В данном случае ((TButton*)Sender). 

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