:: Архив конференции по VFP до 2005 года
Меню и горячие клавиши
Вячеслав Клепинин
Автор

Сообщений: 1597
Откуда: Санкт-Петербург
Дата регистрации: 26.03.2004
Привет всем!

Вопрос про активацию меню.
В приложении главная форма As Top Level в методе Init формирует меню, фрагмент кода которого показан ниже:

DEFINE MENU MainMenu IN (this.Name) BAR
DEFINE PAD mnu_part OF MainMenu PROMPT "Режим"
.......
DEFINE PAD mnu_Help OF MainMenu PROMPT "Помощь" KEY F1, "F1"
ON PAD mnu_Part OF MainMenu ACTIVATE POPUP pad_Part
ON SELECTION PAD mnu_Help OF MainMenu po_MainForm.Help()
DEFINE POPUP pad_Part MARGIN RELATIVE SHADOW
DEFINE BAR 1 OF pad_Part PROMPT "Ввод и корректировка вопросов анкеты"
........ и т.д.
ACTIVATE MENU MainMenu NOWAIT

В процессе работы приложения подгружаются MDI-формы, в методе Activate которых в главное меню добавляются новые пункты, а в методах Destroy и Deactivate эти пункты уничтожаются. Пример добавляемого кода показан ниже:
DEFINE PAD mnu_Edit OF MainMenu PROMPT 'Редактировать' BEFORE mnu_Help
ON PAD mnu_Edit OF MainMenu ACTIVATE POPUP pad_Edit
DEFINE POPUP pad_Edit MARGIN RELATIVE SHADOW
DEFINE BAR 1 OF pad_Edit PROMPT "Добавить нового респондента" KEY F7, "F7"
DEFINE BAR 2 OF pad_Edit PROMPT "Изменить реквизиты респондента" KEY F6, "F6"
........ и т.д.

Проблема в следующем. При запуске MDI-формы новый пункт появляется в главном меню, но ГОРЯЧИЕ КЛАВИШИ, назначенные BAR'ам этого пункта, не работают. Только после того, как пункт будет открыт (т.е. кликаем по нему, появляется popup, ничего не выбираем), горячие клавиши начинают работать. Что не есть удобно. Есть ли возможность обойти этот момент?
Ratings: 0 negative/0 positive
Re: Меню и горячие клавиши
Pliskin

Сообщений: 2959
Откуда: Новосибирск
Дата регистрации: 19.11.2003
Ну и сделай:
Activate popup pad_Edit NOWAIT
Ratings: 0 negative/0 positive
Re: Меню и горячие клавиши
Hel!Riser

Сообщений: 10452
Откуда: Нижний Новгород
Дата регистрации: 11.03.2001
а может они кнопочки SET FUNCTION или ON KEY LABEL держат? И сбрасываюца тока при активизации




------------------
Осторожно - глисты!
Ratings: 0 negative/0 positive
Re: Меню и горячие клавиши
Вячеслав Клепинин
Автор

Сообщений: 1597
Откуда: Санкт-Петербург
Дата регистрации: 26.03.2004
Если бы так просто!

to Pliskin:

Команда Activate popup pad_Edit NOWAIT после добавления MDI-формы сразу показывает выпадающее (popup) меню, причём с левого верхнего угла формы.

to Hel!Riser
Нет, никаких команд для перехвата горячих клавиш нет. Да и не люблю я их, особенно ON KEY LABEL



Отредактировано (10.02.05 11:34)


------------------
Ratings: 0 negative/0 positive
Re: Меню и горячие клавиши
Pliskin

Сообщений: 2959
Откуда: Новосибирск
Дата регистрации: 19.11.2003
дак, скрыть его сразу:
HIDE POPUP pad_Edit
да еще LockScreen поставить, чтоб не моргала
Ratings: 0 negative/0 positive
Re: Меню и горячие клавиши
Вячеслав Клепинин
Автор

Сообщений: 1597
Откуда: Санкт-Петербург
Дата регистрации: 26.03.2004
to Pliskin

Да, спрятать можно... Но ГОРЯЧИЕ КЛАВИШИ всё равно не работают. Начинают работать только после того, как сам откроешь popup.
Ratings: 0 negative/0 positive
Re: Меню и горячие клавиши
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Вячеслав, а нельзя ли изобразить код и ошибкой - а то чего-то самому на Top Level Form лениво писать да и непользую я его никогда




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Меню и горячие клавиши
Serguei Otchirov

Сообщений: 134
Откуда: Россия, г. Элист
Дата регистрации: 16.05.2001
Вячеслав,
У меня есть форма топ-левел в которой горячие клавиши работают внутри меню (в данном случае F-keys).
Но я формирую меню не в Ините формы а отдельным методом и вызываю в Ините:
thisform.MyMenu(this) - если это первый вызов, а другие меню без вызываю параметра.
Пока не жаловался




------------------
С уважением, Сергей Очиров
Ratings: 0 negative/0 positive
Re: Меню и горячие клавиши
Вячеслав Клепинин
Автор

Сообщений: 1597
Откуда: Санкт-Петербург
Дата регистрации: 26.03.2004
Сергей, в том то и дело, что во всех popup, которые расписаны в одном методе, а именно в том, в котором объявляется меню (DEFINE MENU), все назначенные горячие клавиши работают нормально. Проблема возникает, когда я ДОБАВЛЯЮ в линейку меню новый пункт из другого метода (или другой немодальной формы); этот пункт добавляется, но назначенные в нём горячие клавиши не срабатывают, пока, например, не кликнешь по этому пункту мышью. После этого - всё ОК, работает как надо.

Вадим, спасибо, но не хочу заморачивать вас этой проблемой. Не стоит она того... Похоже, что копать здесь надо глубоко, на уровне перехвата сообщений. Получается, что при добавлении нового пункта в меню ссылка в таблицы перехватчика подставляется только при первом вызове popupa этого пункта. Ну что-то типа того...

Спасибо всем!
Ratings: 0 negative/0 positive
Re: Меню и горячие клавиши
AlexK

Сообщений: 2114
Откуда: Королев,Москва
Дата регистрации: 11.12.2000
добавляйте не пункты, а весь popup, удаляя предыдущий - все тоже самое получится

проверьте существование предыдущих popup - display memory



Отредактировано (11.02.05 08:18)


------------------
Береги природу, мать Вашу. Моя страничка www.genrep.net
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 3 (Гостей: 3)

© 2000-2024 Fox Club 
Яндекс.Метрика