Проверить открыто ли контекстное менюDelphi , Компоненты и Классы , МенюПроверить открыто ли контекстное меню
Оформил: 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; Статья Проверить открыто ли контекстное меню раздела Компоненты и Классы Меню может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |