Вниз
Скачать: CL | DM;

Вопрос по контекстному меню.   Найти похожие ветки 

← →
i-s-v   (2004-02-16 22:34) [0]

Народ!
Помогите, плз!
Вопрос по контекстному меню.
При появлении меню отрабатывается событие OnPopup. А как зарегистрировать его исчезание???
Заранее благодарен.


← →
Defunct ©   (2004-02-16 23:49) [1]

В модуле Menus, объявлена глобальная переменная PopupList:TPopupList, Туда попадают все PopupMenu и не только Popup, и именно этот объект "PopupList" решает когда убирать с экрана PopupMenu. Изучите класс TPopupList, найдите в нем закрытие PopupMenu (должно быть в процедуре WndProc), напишите свой класс в котором будет событие OnClose.


← →
Defunct ©   (2004-02-17 01:19) [2]

Вопрос, зачем это отлавливать?


← →
i-s-v   (2004-02-20 23:43) [3]

Сенькс!
Отлавливать нужно вот зачем:
есть форма, которая исчезает, если убрать с нее мышу. Контекстное меню может выходить за пределы формы. Чтообы удобно было, в событии OnPOPUP останавливаю таймер, который проверяет положение крысы. А при исчезании меню таймер снова должен стартовать...
Вот такая мура --)


← →
i-s-v   (2004-02-29 20:28) [4]

А можно примерчик?
Промучался, нифига не получилось


← →
Defunct ©   (2004-02-29 22:57) [5]

> А можно примерчик?

...
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
procedure PopupMenu1Popup(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
Open : Boolean ;
Procedure IdleMessage(var Message:tagMSG;var Handled:Boolean);
public
OnClosePopup : TNotifyEvent;
procedure PopupMenu1ClosePopup(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Open := False;
OnClosePopup := PopupMenu1ClosePopup;
PopupMenu1.OnPopup := PopupMenu1Popup;
Application.OnMessage := IdleMessage;
end;

Procedure TForm1.IdleMessage;
Begin
With Message Do
Begin
If (Message>=WM_COMMAND) And Open Then
Begin
Open := False;
If Assigned(OnClosePopup) Then OnClosePopup(Self);
End;
End;
End;

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
Caption := Format("%x",[LastMessage]);
ShowMessage("Меню отрылось");
Open := True;
end;

procedure TForm1.PopupMenu1ClosePopup(Sender: TObject);
begin
ShowMessage("Меню закрылось");
end;
...



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
3-43312
KrasavAl
2004-02-12 12:24
2004.03.14
Как в удобном виде для клиента связать с сетевым MS SQL Server ом


1-43671
Grinder
2004-03-01 20:10
2004.03.14
Как сделать форму на панели задачь?


14-43781
Nous Mellon
2004-02-18 17:03
2004.03.14
Художественные думы


14-43856
reticon
2004-02-20 17:33
2004.03.14
Смена провайдера или непонимание глубины всех наших глубин


4-43972
Unknown
2004-01-07 09:17
2004.03.14
Память, занятая процессом




   Наверх