Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





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


1-43473
iudjen
2004-02-29 17:48
2004.03.14
random


1-43586
sig22
2004-02-27 14:22
2004.03.14
Декомпиляция


1-43555
Александр1
2004-02-27 16:45
2004.03.14
РАБОТА С StringGrid?????


3-43252
Пубертанец
2004-02-13 10:13
2004.03.14
Кто знает, как работать с TReferenceField?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский