К меню относятся следующие области: прочие меню (Menu
), основное меню (MainMenu
), меню пользователя (UserMenu
), меню выбора диска (Disks
).
Под списками понимается: список автодополнения (Shell
—/DialogAutoCompletion
), и различные открытые списки в диалогах (Dialog
) — List box / Combo box / History.
Далее в тексте “меню” и “списки” не разделяются, и упоминаются под общим названием “меню”.
Menu.Id
string
"{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"
(см. GUID объектов)
Menu.Value
string
Menu.GetValue
)
Drv.ShowMode
number
информация, отображаемая в меню выбора дисков; набор битовых флагов:
0x00000001
0x00000002
0x00000004
0x00000008
0x00000010
0x00000100
0x00000020
0x00000040
0x00000080
0x00000200
Drv.ShowPos
number
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
:
-1
1
если фильтр уже включен, 0
— фильтр выключен
0
1
1
фиксация текста фильтра (Ctrl+Alt+L)
Mode
:
-1
1
если текст фильтра зафиксирован, 0
— фильтр можно менять с клавиатуры
0
1
2
1
если фильтр включен и строка фильтра не пуста
3
4
Если фильтрация недоступна (не меню; не список) возвращает -1
.
Если код возврата специально не оговорен, в случае успеха возвращает 1
, в случае ошибки 0
.
S=Menu.FilterStr([Action[,S]])
Выполняет операции со строкой фильтра (Ctrl+Alt+F).
Action
:
0
1
установить (заменить) в фильтре строку S
Если фильтр не был включен — включает его, режим фиксации не трогается, но игнорируется.
Возвращает предыдущее значение строки фильтра
S=Menu.GetValue([Pos])
Возвращает текст пункта меню с номером Pos
.
Если текущий “объект” не меню или позиция Pos
не валидна (меньше 0
или больше количества пунктов в меню), то возвращается пустая строка.
Если Pos
не указан или равен 0
, то действие аналогично применению Menu.Value
.
Позиция меню не меняется.
b=Menu.ItemStatus([Pos])
Возвращает в младшем слове набор битовых флагов — состояние пункта меню с номером Pos
(текущая позиция — Pos=0
или не указан):
Флаги:
0x00000001
0x00000002
0x00000004
0x00000008
0x00000010
0x00000020
В старшем слове — код символа пометки (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
:
0
1
2
3
S
в пункте меню
Если параметр Mode
не указан, подразумевается полное совпадение.
Параметр Dir
задаёт направление поиска:
0
1
2
Возвращает позицию пункта меню (если найден), 0
— ошибка при позиционировании (нет пункта или пункт задисаблен), -1
— функция вызвана не для меню.
Пункты меню нумеруются, начиная с 1
. В нумерацию также включаются разделители и заблокированные пункты меню.
Смотрите также: