Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.14;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.019 c
4-43968
Duke DEE
2004-01-03 21:25
2004.03.14
Нажатие кнопки в другой программе


1-43463
i-s-v
2004-02-16 22:34
2004.03.14
Вопрос по контекстному меню.


1-43605
frost
2004-03-02 14:24
2004.03.14
Изменение названия колонок у TListView


3-43307
tomek
2004-02-11 20:50
2004.03.14
Interbase драйвер


1-43471
aha
2004-02-29 15:26
2004.03.14
Работа с Chart , можно ли вычислить значение