К меню относятся следующие области: прочие меню (Menu), основное меню (MainMenu), меню пользователя (UserMenu), меню выбора диска (Disks).
Под списками понимается: список автодополнения (Shell—/DialogAutoCompletion), и различные открытые списки в диалогах (Dialog) — List box / Combo box / History.
Далее в тексте “меню” и “списки” не разделяются, и упоминаются под общим названием “меню”.
Menu.Idstring
"{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" (см. GUID объектов)
Menu.Valuestring
Menu.GetValue)
Drv.ShowModenumber
информация, отображаемая в меню выбора дисков; набор битовых флагов:
0x000000010x000000020x000000040x000000080x000000100x000001000x000000200x000000400x000000800x00000200Drv.ShowPosnumber
1 — для левой (Alt+F1), 2 — для правой (Alt+F2).
Pos=Object.CheckHotkey(S[,StartPos])Функция позволяет проверить и получить позицию элемента, для которого назначена горячая клавиша S.
Если S — пустая строка, то функция вернёт позицию элемента, для которого горячие клавиши не назначены.
Если не задать StartPos, то поиск осуществляется с начала.
Работает как в меню, так и в диалогах.
Если текущий элемент диалога — открытый список, то функция работает не с диалогом, а с этим списком.
Возвращает позицию найденного элемента. 0 — ничего не найдено, -1 — функция вызвана не из меню/диалога/списка.
Например:
В меню вызова плагинов (F11) плагину S&R назначена горячая клавиша 7.
Следующая последовательность макрокоманд для редактора вызовет плагин (если хоткей назначен) или стандартный диалог поиска (если хоткей не назначен):
S=Object.GetHotkey([Pos])Возвращает горячую клавишу S для пункта меню с номером Pos.
Если Pos не указан, или равен 0 — подразумевается текущий пункт.
Если горячая клавиша для пункта меню не задана, то возвращается пустая строка ("").
В случае ошибки (не меню; нет хоткея; Pos больше чем количество пунктов меню) также возвращается пустая строка.
N=Menu.Filter([Action[,Mode]])Выполняет операции фильтрации (RAlt/Ctrl+Alt+F).
Action:
0включение фильтра
Mode:
-11 если фильтр уже включен, 0 — фильтр выключен
011фиксация текста фильтра (Ctrl+Alt+L)
Mode:
-11 если текст фильтра зафиксирован, 0 — фильтр можно менять с клавиатуры
0121 если фильтр включен и строка фильтра не пуста
34Если фильтрация недоступна (не меню; не список) возвращает -1.
Если код возврата специально не оговорен, в случае успеха возвращает 1, в случае ошибки 0.
S=Menu.FilterStr([Action[,S]])Выполняет операции со строкой фильтра (Ctrl+Alt+F).
Action:
01установить (заменить) в фильтре строку S
Если фильтр не был включен — включает его, режим фиксации не трогается, но игнорируется.
Возвращает предыдущее значение строки фильтра
S=Menu.GetValue([Pos])Возвращает текст пункта меню с номером Pos.
Если текущий “объект” не меню или позиция Pos не валидна (меньше 0 или больше количества пунктов в меню), то возвращается пустая строка.
Если Pos не указан или равен 0, то действие аналогично применению Menu.Value.
Позиция меню не меняется.
b=Menu.ItemStatus([Pos])Возвращает в младшем слове набор битовых флагов — состояние пункта меню с номером Pos (текущая позиция — Pos=0 или не указан):
Флаги:
0x000000010x000000020x000000040x000000080x000000100x00000020В старшем слове — код символа пометки (U+XXXX).
0x00000002 и старшее слово равно 0, то Far использует символ пометки √ (U+221A).0x00000002 и старшее слово не равно 0, то Far использует символ пометки из старшего слова.if band(Menu.ItemStatus(),0x00000002) then
mf.msgbox("Selected", unicode.utf8.char(rshift(Menu.ItemStatus(),16)))
else
mf.msgbox("Not Selected")
endФункция работает со всеми пунктами меню, в том числе с теми, которые в данный момент не отображаются (скрытые пункты учитываются в позиции).
Если текущий “объект” не меню или позиция Pos невалидна (меньше 0 или больше количества пунктов в меню), то функция возвращает значение -1 (все биты установлены).
Pos=Menu.Select(S[,Mode[,Dir]])В меню позиционирует курсор на первый пункт, содержащий подстроку S.
Поиск регистронезависим.
Если такого пункта нет, то ничего не делает.
Поиск подстроки ведётся в зависимости от указанного режима Mode:
0123S в пункте меню
Если параметр Mode не указан, подразумевается полное совпадение.
Параметр Dir задаёт направление поиска:
012Возвращает позицию пункта меню (если найден), 0 — ошибка при позиционировании (нет пункта или пункт задисаблен), -1 — функция вызвана не для меню.
Пункты меню нумеруются, начиная с 1. В нумерацию также включаются разделители и заблокированные пункты меню.
Смотрите также: