Как узнать текущую кнопку в диалоге?

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Как узнать текущую кнопку в диалоге?

Post by fml2 »

Здравствуйте.

Я хочу написать фрагмент на Луа, с помощью которого можно было бы узнать, какая кнопка в диалоге является "текущей", т.е. подсвеченной, т.е. если нажать "Ввод", то произведется действие этой кнопки.

Моя проблема, наверное, заключается в том, что я не очень понимаю, как работать с диалогами Фар из макросов.

После поисков в luafar_manual.chm и в интернете я понял, что мне, возможно, пригодится функция "far.GetDlgItem (hDlg, numitem [,item])" и что каждый диалог в Фар имеет свой UID. Но дальше я не пойму. Как из этого UID (символьная строка) получить сам диалог (hDlg)? Дальше, я думаю, GetDlgItem скажет мне, является ли этот элемент выбранным.

Конкретно речь идет о диалоге поиска файлов (Alt+F7) и кнопке "Goto". По выбранности этой кнопки я хочу проверять, закончился ли уже поиск файлов.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Как узнать текущую кнопку в диалоге?

Post by Shmuel »

fml2 wrote:я понял, что мне, возможно, пригодится функция "far.GetDlgItem (hDlg, numitem [,item])" и что каждый диалог в Фар имеет свой UID. Но дальше я не пойму. Как из этого UID (символьная строка) получить сам диалог (hDlg)?
Для получения hDlg UID не нужен, нужно знать номер окна диалога. А если данный диалог является активным окном, то и номер окна знать не обязательно.

Code: Select all

hDlg = far.AdvControl("ACTL_GETWINDOWINFO").Id
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Re: Как узнать текущую кнопку в диалоге?

Post by fml2 »

Попробовал написать соответствующий код. Это возможно, но как-то не очень удобно, т.к. свойства элементов диалога возвращаются (ф-цией GetDlgItem) не в полях с осмысленными именами (name, color, ...), а под индексами 1, 2, 3, ... Почему так было сделано?
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Как узнать текущую кнопку в диалоге?

Post by HaRT »

fml2 wrote:свойства элементов диалога возвращаются (ф-цией GetDlgItem) не в полях с осмысленными именами (name, color, ...), а под индексами 1, 2, 3, ...
См. Константы в макроязыке и особенно Для Dlg.GetValue.
fml2 wrote:Почему так было сделано?
Обсуждение отделено.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

Return to “Нужна помощь”