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

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

вопрос по PopupMenu [Delphi 6.0, Win2k]


Flea ©   (2005-11-10 00:27:00) 

добрый вечер.
возник следующий вопрос: в программе на форме есть несколько richedit'ов, для каждого из них установлено в качестве autopopupmenu одно и то же меню.
как узнать в обработчике событий меню, с какого из компонентов активировано меню в данный момент?
заранее благодарю.


Flea   (2005-11-10 16:51:00) [1]

да, что-то я тормознул. спасибо за помощь


ECM   (2005-11-10 14:52:00) [2]


> событие MouseDown всегда возвращает мне в качестве LastPopupCtr
> форму, а не один из richedit'ов...

Так присвойте обработчик MouseDown именно richedit-ам
сразу после создания


Flea   (2005-11-10 14:39:00) [3]

сейчас попробовал сделать проект для проверки этого способа, но событие MouseDown всегдавозвращает мне в качестве LastPopupCtr форму, а не один из richedit'ов...
кроме того не понятно, что делать если richedit'ы создаются во время работы программы, как совершить действие указанное в меню именно с данным richedit'ом?


ECM   (2005-11-10 13:23:00) [4]


> Flea   (10.11.05 11:39) [2]

Так же как  раньше - в обработчике OnMenu итема... А MouseDown используйте для предварительной фиксации:

var
 LastPopupCtr: PControl = nil;

procedure TForm1.MouseDown(Sender: PControl; var Mouse: TMouseEventData);
begin
if Mouse.Button=mbRight then LastPopupCtr := Sender;
end;

procedure TForm1.PopupMenu1N1Menu(Sender: PMenu; Item: Integer);
begin
 Assert(LastPopupCtr <> nil);
 if LastPopupCTr = R1 then
      MsgOk('Top richedit') else
 if LastPopupCtr = r2 then
      MsgOk('Bottom richedit');
end;


Flea   (2005-11-10 11:39:00) [5]

а как тогда узнать какой из item'ов popupmenu был нажат?


Thaddy   (2005-11-10 06:54:00) [6]

OnPopup can not be used but you can connect OnMouseDown handler like:

procedure TForm1.MouseDown(Sender: PControl; var Mouse: TMouseEventData);
begin
 if Mouse.Button=mbRight then
    if sender = R1 then
       MsgOk('Top richedit') else
    if sender = r2 then
       MsgOk('Bottom richedit');
end;


Наверх

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