Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.26;
Скачать: CL | DM;

Вниз

раскрытие MenuItem   Найти похожие ветки 

 
mega   (2004-12-14 16:59) [0]

Привет, Мастера. Есть пункт меню с подменю, как оследить событие,когда пользователь раскрыл и закрыл подменю? Или его текущее состояние (закрыто/открыто)?


 
Piter ©   (2004-12-14 22:08) [1]

mega   (14.12.04 16:59)

а зачем это нужно?


 
Игорь Шевченко ©   (2004-12-14 23:58) [2]


> Есть пункт меню с подменю, как оследить событие,когда пользователь
> раскрыл



unit main;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 Menus;

type
 TfMain = class(TForm)
   MainMenu1: TMainMenu;
   File1: TMenuItem;
   N1: TMenuItem;
   Open1: TMenuItem;
   N2: TMenuItem;
   Save1: TMenuItem;
   Saveas1: TMenuItem;
   N3: TMenuItem;
   Exit1: TMenuItem;
   Text1: TMenuItem;
   Binary1: TMenuItem;
 private
   procedure WMInitMenuPopup (var Message : TWMInitMenuPopup);
      message WM_INITMENUPOPUP;
 end;

var
 fMain: TfMain;

implementation

{$R *.DFM}

{ TfMain }

procedure TfMain.WMInitMenuPopup(var Message: TWMInitMenuPopup);
var
 SubMenu, NewItem: TMenuItem;
begin
 SubMenu := MainMenu1.FindItem (Message.MenuPopup, fkHandle);
 if Assigned(SubMenu) then begin
   NewItem := TMenuItem.Create(Self);
   NewItem.Caption := "New item";
   SubMenu.Add (NewItem);
 end;
end;

end.


При закрытии меню, по-моему, окну посылается сообщение WM_EXITMENULOOP

С уважением,


 
mega   (2004-12-15 08:37) [3]

Можеть есть какие нибудь варианты?


 
Gero ©   (2004-12-15 08:38) [4]

Мда, чукча не читатель, чукча писатель.


 
mega   (2004-12-15 08:41) [5]

Виноват - из кеша открыл... Спасибо за ответ.


 
Leonid Troyanovsky ©   (2004-12-15 10:33) [6]


> mega   (14.12.04 16:59)  
> Привет, Мастера. Есть пункт меню с подменю, как оследить
> событие,когда пользователь раскрыл и закрыл подменю? Или


В форме, владеющей этим меню, надо сделать обработчик
message WM_MENUSELECT (var msg: TWMMenuSelect)
(не забыть вызов inherited).

Анализируя msg.MenuFlag на наличие MF_POPUP можно
узнать, что выбран пункт, содержащий подменю.
Идентифицировать TMenuItem можно сравнивая его
Command v msg.IDItem (рекурсивный поиск).

Закрывается меню при (msg.MenuFlag = $FFFF) and (msg.Menu=0).

--
С уважением, LVT.


 
Экспериментатор   (2004-12-15 13:35) [7]

Если нужно отследить открытие и перед ним что-нибудь сделать с меню или с его подменю
достаточно обратить внимание на OnClick
перед появлением подменю  -  срабатывает событие OnClick .



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.029 c
14-1101642690
ИМХО
2004-11-28 14:51
2004.12.26
Знатокам компьютерных игр


6-1097574225
Grigory
2004-10-12 13:43
2004.12.26
Что такое _RemotableHandle при использовании IHTMLElementRender


3-1101977596
makz
2004-12-02 11:53
2004.12.26
SQL как данные


3-1101788722
Frozzen
2004-11-30 07:25
2004.12.26
Права в ИБ


4-1100398034
VTM
2004-11-14 05:07
2004.12.26
RS-232