Справочник по компонентам Delphi. Часть 1
Страница 37. Компонент TMenu


 

Компонент TMenu

TObject—”TPersistent->TComponent->TMenu
Модуль MENUS

В Палитру компонентов не входит

Этот компонент отсутствует в Палитре компонентов, но содержит методы и свойства, приведенные в таблице, общие для двух потомков — TMainMenu и TPopupMenu, которые туда входят.

(Ro) property Handle: HMENU;

Содержит дескриптор меню.

property WindowHandle: HWND;

Содержит дескриптор окна Windows (формы или оконного элемента управления), с кото­рым связано меню.

(Ro) property Items: TMenuItem;

Содержит список элементов меню. На самом верху иерархии меню есть единственный элемент (со статусом MFPOPUP), чей список и используется.

function DispatchCoinn>and(ACommand: Word): Boolean;

Отыскивает пункт меню с заданной командой, в случае успеха вызывает его метод Click и возвращает True.

function DispatchPopupfAHandle: HMENU): Boolean;

Работает как Di spatchCommand, но отыскивает пункт меню с дескриптором AHandle.

function Findltem(Value: Word; Kind: TFindItemKind): TMenuItem; TFindItemKind = (fkComrriand, fkHandle, fkShortCut);

Возвращает указатель на объект, соответ­ствующий заданному пункту меню. Параметр Value должен содержать величину, которая интерпретируется в соответствии с одним из трех способов поиска (по команде, дескрип­тору или комбинации горячих клавиш).

function GetHelpContext(Value: Word; ByComniand: Boolean) : THelpContext;

Возвращает значение контекста помощи элемента меню. Если параметр ByCommand установлен в True, Value содержит связанную с пунктом команду, в противном случае — дескриптор. Если контекст у пункта отсут­ствует (равен 0), то отыскивается ближайший родительский ненулевой контекст. Если и он не найден, возвращается 0.

function IsShortCut(var Message: TWMKey): Boolean;

Определяет, какая комбинация горячих клавиш ShortCut нажата, и отыскивает соот­ветствующий пункт меню. Если пункт с таким значением ShortCut найден, и его метод Click отработал успешно, метод возвращает True.

В следующем примере метод обрабатывает сообщение Windows WM_MENUSELECT, которое возникает при перемещении фокуса между пунк­тами меню. В зависимости от типа пункта показывается его дескриптор или команда:

procedure TFormI.wmMenuSelect(var Msg :TWMMenuSelect) ;
var Anitem : TMenuItem;
begin with Msg do begin

if (MenuFlag and MF_POPUP <>0 ) then begin Anitem := Formi.Menu.Findltem(Idltem, fkHandle);

if Anitemonil then Labell .Caption :=
'Handle:'+IntToHex(Anitem.Handle,4) ;
end else begin

Anitem := Formi.Menu.Findltem(Idltem, fkCommand);

if Anitemonil then Labell .Caption :=

'Command:'+IntToHex(Anitem.Command,4) ;
end;
end;
inherited;
end;
 
 
« Предыдущая статья   Следующая статья »