Application.GetMenu
Описание
Возвращает численно проиндексированную таблицу, содержащую текущую структуру меню панели меню приложения.
Параметры
Нет.
ВозвратResultVariable
(таблица) Численно индексированная таблица таблиц пунктов меню, или значение nil, если произошла ошибка. Каждая позиция таблицы будет содержать следующие ключи:
Можно использовать Application.GetLastError для определения случился ли отказ в работе этого действия и почему. При добавлении действия из редактора скрипта, можно использовать это поле для определения переменной, которая возвращает значение, сохраняющееся в ней.
Смотрите также: Связанные действия
ПримерыПример 1-- Output all top level menu items: -- Вывод всех пунктов меню верхнего уровня: local strMenuData = ""; -- Store the contents of the menu in a table -- Сохранение содержимого меню в таблице tblMenu = Application.GetMenu(); -- Check that the table exists -- Убедимся, что таблица существует if (tblMenu) then local nNumItems = Table.Count(tblMenu); -- Step through the table row by row -- Проход по таблице по строкам for index = 1, nNumItems do local tblItemInfo = tblMenu[index]; if (tblItemInfo) then -- Add the text to the string -- Добавляем текст к строке strMenuData = strMenuData .. tblItemInfo.Text .. "\r\n"; end end -- Output the created string to the user -- Вывод созданной строки пользователю Dialog.Message("Top Level Menu Items", strMenuData); endВывод всех пунктов меню верхнего уровня пользователь в диалоговом окне сообщения. Пример 2--%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --% Name: OutputMenu (tMenuToOutput, nLevelCount = 0, sMenuString = ""); % --% Values: tMenuToOutput: REQUIRED - the menu table generated from % --% Application.GetMenu % --% nLevelCount: Optional (default to 0), the indent the current item % --% should have in the output. % --% sMenuString: Optional (default to ""), a string containing % --% the menu items. % --% Returns: A string containing the menu items ready for output. % --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --% Имя: OutputMenu (tMenuToOutput, nLevelCount = 0, sMenuString = ""); % --% Значения: tMenuToOutput: ТРЕБУЕТСЯ - таблица меню сгенерирована % --% Application.GetMenu % --% nLevelCount: Необязательно (по умолчанию равна 0), отступ % --% текущего пункта, что будет на выходе. % --% sMenuString: Необязательно (по умолчанию равна ""), строка, % --% содержащая пункты меню. % --% Возврат: Строка, содержащая пункты меню готовые для вывода. % --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function OutputMenu (tMenuToOutput, nLevelCount, sMenuString) -- Since we don't want to make nLevelCount required (for the first call), -- we have to initialize it if it is not passed to the function -- Поскольку нежелательно затребовать nLevelCount (для первого вызова), -- инициализаруем её если она не передается функции if not nLevelCount then nLevelCount = 0; end -- sMenuString is not a required variable (for the first call), -- therefore we must initialize it if it was not passed to the function. -- sMenuString не обязательная переменная (для первого вызова), -- поэтому нужно инициализировать её, если она не передается функции. if not sMenuString then sMenuString = ""; end -- Menu table is numerically indexed, step through for each node -- Таблица меню численно проиндексирована, step through for each node for nIndex, tMenuItem in pairs(tMenuToOutput) do -- Add the current menu item to the string to return, whether it has a sub menu or not -- Добавляем пункт текущего меню в строку для возврата, имеет ли она подменю или нет sMenuString = sMenuString .. String.Repeat(" ", nLevelCount * 4) .. tMenuItem.Text .. " (ID: " .. tMenuItem.ID .. ")" .. "\r\n"; -- Check if a sub menu exists at the current menu's location -- Проверим есть ли подменю в позиции текущего меню if type(tMenuItem.SubMenu) == "table" and tMenuItem.ID == -1 then -- A sub menu exists. Recursively call this function to include the sub menu. -- Increasing the level count by 1 controls the indent that the item will have in the output. -- Подменю существует. Рекурсивный вызов этой функции для включения подменю. -- Увеличение счетчика уровня на 1 управляет отступом, что пункт будет иметь на выходе. sMenuString = OutputMenu (tMenuItem.SubMenu, nLevelCount + 1, sMenuString); end end -- Return the menu string -- Возвращаем строку меню return sMenuString; end -- Get the menu structure and store in a table -- Получаем структуру меню и сохраняем в таблицу tMenu = Application.GetMenu(); -- Set the title and message for the Dialog.Message box -- Устанавливаем заголовок и сообщение для окна Dialog.Message sTitle = "Current Menu Structure"; sMessage = OutputMenu(tMenu); -- Display a Dialog.Message box to the user -- Показываем окно Dialog.Message пользователю Dialog.Message(sTitle, sMessage);Вывод всей структуры меню пользователю в диалоговом окне сообщения. Этот пример использует расширенное выполнение функции для рекурсивного прохода через меню.
Смотрите также: Связанные действия
|