Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  166

•  TDictionary Custom Sort  3 341

•  Fast Watermark Sources  3 095

•  3D Designer  4 851

•  Sik Screen Capture  3 350

•  Patch Maker  3 555

•  Айболит (remote control)  3 665

•  ListBox Drag & Drop  3 018

•  Доска для игры Реверси  81 730

•  Графические эффекты  3 948

•  Рисование по маске  3 253

•  Перетаскивание изображений  2 632

•  Canvas Drawing  2 761

•  Рисование Луны  2 586

•  Поворот изображения  2 194

•  Рисование стержней  2 170

•  Paint on Shape  1 569

•  Генератор кроссвордов  2 240

•  Головоломка Paletto  1 769

•  Теорема Монжа об окружностях  2 235

•  Пазл Numbrix  1 685

•  Заборы и коммивояжеры  2 059

•  Игра HIP  1 282

•  Игра Go (Го)  1 230

•  Симулятор лифта  1 475

•  Программа укладки плитки  1 219

•  Генератор лабиринта  1 548

•  Проверка числового ввода  1 367

•  HEX View  1 497

•  Физический маятник  1 359

 
скрыть


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

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



Delphi Sources

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



Оформил: DeeCo

{ 
  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;







Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте