![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
раскрытие MenuItem
mega © (2004-12-14 16:59:00)Привет, Мастера. Есть пункт меню с подменю, как оследить событие,когда пользователь раскрыл и закрыл подменю? Или его текущее состояние (закрыто/открыто)?
Экспериментатор (2004-12-15 13:35:00) [1]Если нужно отследить открытие и перед ним что-нибудь сделать с меню или с его подменю
достаточно обратить внимание на OnClick
перед появлением подменю - срабатывает событие OnClick .
Leonid Troyanovsky (2004-12-15 10:33:00) [2]
> 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.
mega (2004-12-15 08:41:00) [3]Виноват - из кеша открыл... Спасибо за ответ.
Gero (2004-12-15 08:38:00) [4]Мда, чукча не читатель, чукча писатель.
mega (2004-12-15 08:37:00) [5]Можеть есть какие нибудь варианты?
Игорь Шевченко (2004-12-14 23:58:00) [6]
> Есть пункт меню с подменю, как оследить событие,когда пользователь
> раскрыл
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
С уважением,
Piter (2004-12-14 22:08:00) [7]mega (14.12.04 16:59)
а зачем это нужно?