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


Автор: Бегемот 27.3.2005, 00:19
Всем ПРИВЕТ! smile
Есть n-ное количество Panel'ей. При наведении указателя мыши на любую из них, должны поменяться некоторые свойства, именно той панели на которую наведён указатель. Обрабатываю событие onMouseMove для одной из панелей. Затем в Object Inspector'е обработку события onMouseMove для остальных панелей "направляю" на уже написаный обработчик. Можно ли получить идентификатор, что ли, панели, что бы передать его в функцию
вот код
Код

void __fastcall TForm1::Panel1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
 /*--> Здесь надо узнать на какую Panel наведён указатель <---*/
 My_Function(/*--> А здесь передать его в функцию <--*/);
}

..ну а в теле функции по идентификатору меняются свойства нужного компонента
СПАСИБО!

Автор: Adil' 28.3.2005, 13:54
Код
void __fastcall TForm1::Panel1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
  TPanel *pnl=dynamic_cast<TPanel*>(Sender);
  if(pnl)
    My_Function(pnl);
}


Автор: Бегемот 28.3.2005, 21:34
Adil', спасибо! Всё у меня получилось, с твоей подачи, да вот только немного не так я сделал. Вот упрощённый вариант:
Код

void __fastcall TForm1::Panel1MouseMove(TObject *Sender, TShiftState     Shift,
      int X, int Y)
 {
   TPanel *pnl=dynamic_cast<TPanel*>(Sender);
   if(pnl)
    My_Function(pnl->ComponentIndex);
 }
//---------------------------------------------------------------------------
void __fastcall TForm1:: My_Function(int index)
 {
   TPanel *my_panel=dynamic_cast<TPanel*>(Components[index]);
   my_panel->Width = 300;
   my_panel->Height = 40;
   my_panel->Color = clRed;
   my_panel->Font->Color = clYellow;
  /*...ну и так далее */
 }

Вот с передачей в функцию 'pnl' я чего-то не понял! Что пишем-то тогда в теле функции? Как принимаем параметр?(На примере моей функции) smile

Автор: Adil' 29.3.2005, 09:06
Код
void __fastcall TForm1:: My_Function(TPanel *my_panel)
 {
   my_panel->Width = 300;
   my_panel->Height = 40;
   my_panel->Color = clRed;
   my_panel->Font->Color = clYellow;
  /*...ну и так далее */
 }


Автор: Бегемот 29.3.2005, 09:59
Эх, голова моя деревянная! smile Ну конечно же smile
Adil', спасибо за помощь! smile

Автор: UhaMurad 30.3.2005, 09:29
Alid, можно один вопрсик?

Чем отличается (лучше или хуже)

Код

TPanel * pnl = dynamic_cast<TPanel*>(Sender);


от

Код

TPanel * pnl = (TPanel *) Sender;


Спасибо.

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