Программирование в Delphi. Барков И.А - 29 стр.

UptoLike

Составители: 

29
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;
Компонент TMainMenu
TObj ect—”TPersi stent-”TCornponent->TMenu->TMainMenu
Модуль MENUS
Страница Палитры компонентов Standard
Этот компонент представляет главное меню формы и наследует все методы и свойства TMenu.
Особенность его в том, что в нем реализован сложный механизм объединения меню. Это необходимо
по следующим причинам:
Если в приложении имеется несколько форм со своими меню, то для упрощения работы целе-
сообразно соединить их
в одно и управлять меню из главной формы.
Объединение меню нужно при работе с интерфейсом MDI и его подокнами.
function Findltem(Value: Word;     Возвращает указатель на объект, соответствующий заданному
Kind: TFindItemKind): TMenuItem;   пункту меню. Параметр Value должен содержать величину, которая
TFindItemKind = (fkComrriand,      интерпретируется в соответствии с одним из трех способов поиска
fkHandle, fkShortCut);             (по команде, дескриптору или комбинации горячих клавиш).

function GetHelpContext(Value:     Возвращает значение контекста помощи элемента меню. Если па-
Word; ByComniand: Boolean) :       раметр ByCommand установлен в True, Value содержит связанную с
THelpContext;                      пунктом команду, в противном случае — дескриптор. Если кон-
                                   текст у пункта отсутствует (равен 0), то отыскивается ближайший
                                   родительский ненулевой контекст. Если и он не найден, возвраща-
                                   ется 0.
function IsShortCut(var Message:   Определяет, какая комбинация горячих клавиш ShortCut нажата, и
TWMKey): Boolean;                  отыскивает соответствующий пункт меню. Если пункт с таким зна-
                                   чением 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;

                                              Компонент TMainMenu
              TObj ect—”TPersi stent-”TCornponent->TMenu->TMainMenu
              Модуль MENUS
              Страница Палитры компонентов Standard
       Этот компонент представляет главное меню формы и наследует все методы и свойства TMenu.
Особенность его в том, что в нем реализован сложный механизм объединения меню. Это необходимо
по следующим причинам:
       • Если в приложении имеется несколько форм со своими меню, то для упрощения работы целе-
сообразно соединить их в одно и управлять меню из главной формы.
       • Объединение меню нужно при работе с интерфейсом MDI и его подокнами.


                                                 29