Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.20;
Скачать: CL | DM;

Вниз

вопрос по PopupMenu   Найти похожие ветки 

 
Flea   (2005-11-10 00:27) [0]

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


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

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;


 
Flea   (2005-11-10 11:39) [2]

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


 
ECM ©   (2005-11-10 13:23) [3]


> 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 14:39) [4]

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


 
ECM ©   (2005-11-10 14:52) [5]


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2006.08.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.046 c
15-1153555789
jack128
2006-07-22 12:09
2006.08.20
Classes.pas из под Delphi5


4-1145516275
Dimich1978
2006-04-20 10:57
2006.08.20
Программно нажать на кнопку закрытия формы(крестик)


4-1145024247
ShPRO_TT
2006-04-14 18:17
2006.08.20
Криптография в Windows (Crypto API)


2-1154512267
Barnikle
2006-08-02 13:51
2006.08.20
найти слово в тексте


3-1150355217
novill
2006-06-15 11:06
2006.08.20
IBEXpert. Как задать пользователю права на БД?