Форум: "Основная";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];
Внизраскрытие 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.031 c