Макро-функция checkhotkey()
Макро-функция checkhotkey()
Пишу такой макрос для проверки:
[HKEY_CURRENT_USER\Software\FAR2\KeyMacros\Shell\F5]
"Sequence"="$If (checkhotkey(\"^\")) \"true\" $Else \"false\" $End"
В итоге получаю, что бы я не вводил в качестве параметра checkhotkey() всегда результат true, несмотря на то что меню не открыто.
Проверьте пожалуйста.
Far Manager, version 2.0 (build 1157) x86
WinXP sp3
Примечание модератора:
Связанные темы:
[HKEY_CURRENT_USER\Software\FAR2\KeyMacros\Shell\F5]
"Sequence"="$If (checkhotkey(\"^\")) \"true\" $Else \"false\" $End"
В итоге получаю, что бы я не вводил в качестве параметра checkhotkey() всегда результат true, несмотря на то что меню не открыто.
Проверьте пожалуйста.
Far Manager, version 2.0 (build 1157) x86
WinXP sp3
Примечание модератора:
Связанные темы:
Last edited by GrAnD on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Связанные темы
Reason: Связанные темы
Re: Макрокоманда checkhotkey()
А что ты хотел от этой функции в области Shell?
Она работает только если текущая макрообласть одна из: MainMenu, Menu, Disks и UserMenu.
В остальных случаях возвращает -1.
Она работает только если текущая макрообласть одна из: MainMenu, Menu, Disks и UserMenu.
В остальных случаях возвращает -1.
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: Макрокоманда checkhotkey()
просто в энциклопедии написано что возвращает 0Skirda wrote:А что ты хотел от этой функции в области Shell?
Она работает только если текущая макрообласть одна из: MainMenu, Menu, Disks и UserMenu.
В остальных случаях возвращает -1.
"Возвращает хоткей S для пункта N, если в меню присутствует горячая клавиша и текущий "объект" - меню. В противном случае (не меню; нет хоткея; N больше чем количество пунктов меню) возвращает 0."
Re: Макрокоманда checkhotkey()
хмм... надо бы уточнить про -1 в Писании (-1 - это когда не в той области вызвали)
или правильнее вернуть 0?
или правильнее вернуть 0?
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- HaRT
- Moderator
- Posts: 11123
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 239 times
- Been thanked: 380 times
Re: Макрокоманда checkhotkey()
Skirda
Мне кажется, лучше оставить -1 и исправить документацию. Какой смысл ветвиться по возвращаемому значению этой функции при её вызове из неправильной области?
А вот что было бы интересно, так это иметь возможность анализировать наличие горячей клавиши и в других областях: в диалоге вообще/ в выпадающем списке — наличие контрола/ пункта списка с запрошенной горячей клавишей.
Мне кажется, лучше оставить -1 и исправить документацию. Какой смысл ветвиться по возвращаемому значению этой функции при её вызове из неправильной области?
А вот что было бы интересно, так это иметь возможность анализировать наличие горячей клавиши и в других областях: в диалоге вообще/ в выпадающем списке — наличие контрола/ пункта списка с запрошенной горячей клавишей.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Re: Макрокоманда checkhotkey()
ок. Писание поправил, теперь про "вообще".
далее проверяйте:
1. 1.75
2. 2.00
здесь:
а) в диалогах (в дополнении к выше перечисленному) вернет "угу" или "неугу"
б) если текущий элемент DI_LISTBOX или открытый список (комбобокс или хистори), то вернет "угу" или "неугу" только для этого элемента.
оно?
далее проверяйте:
1. 1.75
2. 2.00
здесь:
а) в диалогах (в дополнении к выше перечисленному) вернет "угу" или "неугу"
б) если текущий элемент DI_LISTBOX или открытый список (комбобокс или хистори), то вернет "угу" или "неугу" только для этого элемента.
оно?
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- HaRT
- Moderator
- Posts: 11123
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 239 times
- Been thanked: 380 times
Re: Макрокоманда checkhotkey()
В каком смысле?Skirda wrote:"угу" или "неугу" только для этого элемента
Хотелось бы знать, есть ли в списке хоть один элемент с заданной горячей клавишей — как в меню.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Re: Макрокоманда checkhotkey()
в таком - если текущий элемент список (листбокс или открытый комбобокс или открытый хистори).HaRT wrote:В каком смысле?Skirda wrote:"угу" или "неугу" только для этого элемента
ну так стяни тестовый билд и попробуй.HaRT wrote:Хотелось бы знать, есть ли в списке хоть один элемент с заданной горячей клавишей — как в меню.
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- HaRT
- Moderator
- Posts: 11123
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 239 times
- Been thanked: 380 times
Re: Макрокоманда checkhotkey()
Вроде работает, как и хотелось. Спасибо!Skirda wrote:ну так стяни тестовый билд и попробуй
Но мысль не стоит на месте. Сложно ли сделать, чтобы, передав пустую строку, проверить наличие элемента (в т.ч. контрола) без горячей клавиши?
Фар есть инструмент, а не нянька. © 2009 DrKnS
Re: Макрокоманда checkhotkey()
не понял, разжуй.
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- HaRT
- Moderator
- Posts: 11123
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 239 times
- Been thanked: 380 times
Re: Макрокоманда checkhotkey()
Skirda
Всё очень просто: хочу узнать, есть ли в меню/ диалоге/ списке хоть один элемент без горячей клавиши. Мне кажется вполне естественным, чтобы на этот вопрос отвечала функция checkHotkey. Как бы её об этом спросить? Предлагаю для этого передать ей параметром пустую строку.
Всё очень просто: хочу узнать, есть ли в меню/ диалоге/ списке хоть один элемент без горячей клавиши. Мне кажется вполне естественным, чтобы на этот вопрос отвечала функция checkHotkey. Как бы её об этом спросить? Предлагаю для этого передать ей параметром пустую строку.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Re: Макрокоманда checkhotkey()
нарисуй хотелку на мантис - мысли есть, но сходу пока не соображу как это красиво сделать (и, главное, не сломать ничего
)

We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- HaRT
- Moderator
- Posts: 11123
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 239 times
- Been thanked: 380 times
Re: Макрокоманда checkhotkey()
№1099Skirda wrote:нарисуй хотелку на мантис
Фар есть инструмент, а не нянька. © 2009 DrKnS
Re: Макрокоманда checkhotkey()
пробуем
1.75-2
2.00-2
здесь
возвращает:
-1 - не в своей области
0 - нет такого
>0 - позицию элемента
Параметр N1 - с какой позиции начать искать
Если S пустая строка, то функция возвращает -1, 0 или номер позиции, у которой отсутствует хоткей
1.75-2
2.00-2
здесь
Code: Select all
N=checkhotkey(S[,N1])
-1 - не в своей области
0 - нет такого
>0 - позицию элемента
Параметр N1 - с какой позиции начать искать
Если S пустая строка, то функция возвращает -1, 0 или номер позиции, у которой отсутствует хоткей
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- HaRT
- Moderator
- Posts: 11123
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 239 times
- Been thanked: 380 times
Re: Макрокоманда checkhotkey()
Я погонял в разных контекстах в 1.75 с разными сочетаниями параметров — вроде бы всё в порядке.Skirda wrote:пробуем
Спасибо большое!
Эх, теперь бы ещё доп. параметры для Menu.Select()…
Фар есть инструмент, а не нянька. © 2009 DrKnS