![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вопрос по 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;