Поддержка / Donate
 

WebMoney

Яндекс.Деньги

SMS.Копилка
Деньги@Mail.ru
Rupay
E-gold
PayPal

 

Благодарю за поддержку!

Лента RSS - Новости сайта Новости сайта
Лента RSS - Новости форума Новости форума
Добавить в закладки и поделиться Bookmark and Share

 

Архив исходников

 


Automatic translation

 
English German French
Italian Spanish Portuguese
Greece Japan Chinese
  Korean  

  

 

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Проверить открыто ли контекстное меню

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  Using the WM_MENUSELECT message of the form won’t work to check if 
  the popup is open. Simply because the parent of the popup is not the 
  form (check the popup method of TPopupMenu). A workaround is to use 
  the api call yourself : 
}

 type
   TForm1 = class(TForm)
     {...}
     procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
       Shift: TShiftState; X, Y: Integer);

   private
     IsMenuOpen: Boolean;
     procedure WMMENUSELECT(var msg: TWMMENUSELECT); message WM_MENUSELECT;
   end;

    {...}
 implementation

 {...}

 procedure TForm1.WMMENUSELECT(var msg: TWMMENUSELECT);
 begin
   inherited;
   IsMenuOpen := not ((msg.MenuFlag and $FFFF > 0) and
     (msg.Menu = 0));
 end;

 procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
 begin
   if Button = mbRight then
     with ClientToScreen(Point(X, Y)) do
       TrackPopupMenuEx(PopupMenu1.Handle, TPM_LEFTALIGN, X, Y,
         Self.Handle, nil);
 end;



Источник - Проект "Delphi World" © Выпуск 2002 - 2004
Автор проекта: Акулов Николай



   Rambler's Top100             Яндекс цитирования