![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите пожайлуста с проблемкой [D6]
jen_bond © (2002-06-23 01:06:00)Как можно узнать номер компонента с которого был вызван PopupMenu(есть 10 кнопок и к ним прекреплен один PopupMenu)!!!!
VID (2002-06-23 11:56:00) [1]to Юрий Зотов: я не знал про popupcomponent. Теперь знаю.
Юрий Зотов (2002-06-23 07:22:00) [2]> VID
Зачем такие страшные навороты? Cущественно гробящие оперативную память и ухудшающие читаемость кода.
> jen_bond
У TPopupMenu есть свойство - PopupComponent. Оно как раз и указывает на тот компонент, при клике по которому правой кнопкой было вызвано это меню (см. справку). Его и используйте. И не надо ничего другого.
jen_bond (2002-06-23 01:55:00) [3]А немножко поподробнее!!!
Заранее спасибо!!!
VID (2002-06-23 01:55:00) [4]что существенно сэкономин оперативную память, и улучшит читаемость кода ! ;)
Anatoly Podgoretsky (2002-06-23 01:46:00) [5].PopupComponent
VID (2002-06-23 01:31:00) [6]Да.
Var: LastBtnInd:Integer=-1; //Глоб переменная
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
IF Button = mbRight then LastBtnInd:= TButton(Sender).ComponentIndex;
end;
а при выборе какого-нить пункта контексного меню пишешь :
ShowMessage(IntToStr(LastBtnInd));
jen_bond (2002-06-23 01:26:00) [7]Спасибо!
А возможно ли что бы не сразу при нажатии правой клавиши выдавалось сообщение, а при выборе в меню(PopupMenu) какого-нибудь понкта???
VID (2002-06-23 01:18:00) [8]Что есть вызов PopUp ? Нажатие правой кнопки крысы на объекте.
Обработаем это дело:
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
IF Button = mbRight then ShowMessage(IntToStr(TButton(Sender).ComponentIndex));
end;
А теперь у всех остальных "баттонов", в object inspector в качестве обработчка onMouseDown укажи Button1MouseDown.
Всё.