Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите пожайлуста с проблемкой [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.

Всё.


Наверх

Титульная страница Поиск, карта сайта Написать письмо