Страница 1 из 1

Создание контексного меню

Добавлено: 14 май 2003, 16:41
ApachiA
Я знаю как создаются интерфесы но незнаю как создавать контексное меню допустим к какомуто бровсу
Кинте пожалуста простенкий примерчик как назначить горячие клавиши а то мои юзеры кнопки на мышах точно скоро сломают :)

Re: Создание контексного меню

Добавлено: 14 май 2003, 17:17
m0p3e
Используй событие cmHotKeys
cmHotKeys : PutHotCommand ( RunMenu ( 'PlanPost_HotKeys' ) );

После описания фейса добавь:

PlanPost_HotKeys menu
{
- 'Расширенная информация (Ctrl+Enter)' , cmAttrib;
------------;
- 'Добавить позицию (F7)', cmInsert;
- 'Удалить позицию (F8)' , cmDelete;
------------;
}

Re: Создание контексного меню

Добавлено: 15 май 2003, 07:59
ApachiA
Спасибо бум пробывать!!!

Re: Создание контексного меню

Добавлено: 15 май 2003, 08:57
Goblin
Дополнительно :
1) если указываешь , как в примере от Мор3е, "горячие" клавиши типа "Ctrl+Enter" - убедись что они есть в том статусе, который идет с фейсом - противном случае толку от их указания ноль
2) обязательно перед посылкой полученной команды от меню проверяй, что за команда : если в фейсе вызвали меню, но не выбрали никакого пункта, функция RunMenu возвращает код команды 11(ХБЗ что за команда, нигде ее идентификатор не нашел, но похоже очень что это какое-то отношение к cmDone или cmClose имеет ), которая при помещении ее в обработку через PutHotCommand или PutCommand
закрывает интерфейс ...
3) константы своих команд в меню опиши заранее и включи в компиляцию проекта перед компиляцией интерфейса и меню ...

P.S. Что в Support'e, что в VIP'е не хочет комплилиться ни меню, ни диалоги - вылетает ...кто мож подскажет - что за ботва ?

Re: Создание контексного меню

Добавлено: 15 май 2003, 13:31
sth
11 это вроде как cmcancel...

в випе была заморочка, что если в одном файле собрано все - код на випе, описание меню, статусы и т.д., то он падал...надо все по отдельным файлам раскладывать...может в этом дело?

Re: Создание контексного меню

Добавлено: 04 мар 2015, 08:10
Алексей
Не могу создать меню на горячую клавишу F2. Вернее меню создается, мышкой вызвать можно, а вот сама горячая клавиша не работает.
Что надо указать? Какой статус интерфейсу?

Re: Создание контексного меню

Добавлено: 04 мар 2015, 11:36
Den
Насколько помню , там нужно чтобы в указанном статус-лайне эта команда была описана с соответствующей клавишей.
Ну т.е., указали sci1Esc в строке меню своем, если там(в ст. лайне этом) нет пары команда+клавиша таких то не будет работать горячая клавиша.

Re: Создание контексного меню

Добавлено: 04 мар 2015, 17:29
Maverick
Как уже было выше сказано - поддержка функциональных клавиш тем или иным интерфейсом определяется используемым этим интерфейсом статус-лайном.
На самом деле, стандартных статус-лайнов, поддерживающих обработку F2 не так уж и много, и в основном она связана с событием cmDefault. Наиболее задействована данная кнопа в Кадрах, там у нее несколько значений.
На всякий случай привожу полный перечень стандартных статус-лайнов Галактики, которые поддерживают обработку F2 ну и соответственно - событие, на нее завязанное
// Общие статусы

Код: Выделить всё

(sci1478Esc..sci1478Esc), F2 = cmDefault
(sci1478EscIns..sci1478EscIns), F2 = cmDefault
(sci1478EscWithFile..sci1478EscWithFile), F2 = cmDefault
// Статусы в аналитических интерфейсах

Код: Выделить всё

(scPickAn..scPickAn), F2 = cmDefault
(scPickAn1..scPickAn1), F2 = cmDefault
(scintD..scintD), F2 = cmF2KEY
(scPickT..scPickT), F2 = cmDefault
(scPickP..scPickP), F2 = cmDefault
(scPASS..scPASS), F2 = cmDefault
(scBut..scBut), F2 = cmDefault
(scButK..scButK), F2 = cmDefault
(scEnterAn..scEnterAn), F2 = cmF2KEY
(scPickBr..scPickBr), F2 = cmDefault
(scButF..scButF), F2 = cmDefault
(scKlndbut..scKlndbut), F2 = cmDefault
(scPickAns..scPickAns), F2 = cmDefault
(sci147EnEscRates..sci147EnEscRates), F2 = cmDefault
(scAvtPick..scAvtPick), F2 = cmDefault
// Статусы экспорта\импорта

Код: Выделить всё

(scDocumDoc..scDocumDoc), F2 = cmZamena
(scDocumRazd..scDocumRazd), F2 = cmZamena
(sciIerarchi1..sciIerarchi1), F2 = cmShowRec
// Статусы непонятного назначения :-)

Код: Выделить всё

(scEuInterf1..scEuInterf1), F2 = cmSavePick  // не стал бы юзать, кто-то под себя писал, возможно и не используется
(scEuInterf2..scEuInterf2), F2 = cmSavePick  // не стал бы юзать, кто-то под себя писал, возможно и не используется
// Статусы Управления персоналом

Код: Выделить всё

(scStaffHireLM..scStaffHireLM), F2 = cmStaffHireForm
(scStaffHireLMPick..scStaffHireLMPick), F2 = cmStaffHireForm
(scStaffCatComEd..scStaffCatComEd), F2 = cmStaffToArc
(scStaffCatComEdPick..scStaffCatComEdPick), F2 = cmStaffToArc
(scStaffStruct..scStaffStruct), F2 = cmStaffAddFtr
(scStaffStructNoCopy..scStaffStructNoCopy), F2 = cmStaffAddFtr
(scStaffStructPick..scStaffStructPick), F2 = cmStaffAddFtr
(scStaffStructPickDep..scStaffStructPickDep), F2 = cmStaffAddFtr
(scStaffStructRaise..scStaffStructRaise), F2 = cmStaffAddFtr
(scStaffVacancy..scStaffVacancy), F2 = cmStaffAddFtr
(scStaffMoveVacancy..scStaffMoveVacancy), F2 = cmStaffMoveAppoint
(scStaffMoveVacancyPick..scStaffMoveVacancyPick), F2 = cmStaffMoveAppoint
(scStaffPersonVacancy..scStaffPersonVacancy), F2 = cmStaffAddFtr
(scStaff1478EscIns..scStaff1478EscIns), F2 = cmDefault
(scStaffReceptionT2PasspNat..scStaffReceptionT2PasspNat), F2 = cmStaffPasspForm
(scStaffRecepT2Hire..scStaffRecepT2Hire), F2 = cmStaffHireForm
(scStaffRecepT2HirePick..scStaffRecepT2HirePick), F2 = cmStaffHireForm
// Статусы ЗП

Код: Выделить всё

(scStaffPass..scStaffPass), F2 = cmDefault
(scStaffPick..scStaffPick), F2 = cmDefault
(scStaffBut..scStaffBut), F2 = cmDefault
//Статусы для выбора с пометкой

Код: Выделить всё

(sci1InsPMEsc..sci1InsPMEsc), F2 = cmDefault
// ТЭП и ТПП

Код: Выделить всё

(scTpickan..scTpickan), F2 = cmDefault
(scTbut..scTbut), F2 = cmDefault
(sciTPP13478Esc..sciTPP13478Esc), F2 = cmDefault
(sciTPP1478CPEsc..sciTPP1478CPEsc), F2 = cmDefault
(sciTPP13478CPEsc..sciTPP13478CPEsc), F2 = cmDefault
// VDE

Код: Выделить всё

(sci1478EscVDE..sci1478EscVDE), F2 = cmDefault
Ну и естественно, сами константы должны быть определены:
Стандартные коды констант событий описаны в соответствующих *.CCM. Если их нет, привожу их определения (в проекте засунуть в блок констант).

Код: Выделить всё

cmDefault - определение не требуется, зашито на уровне ядра
cmF2KEY = 12124;
cmZamena = 3025;
cmShowRec = 7039;
cmSavePick = 12155;
cmStaffHireForm = 9044; 
cmStaffToArc = 9116;
cmStaffAddFtr = 9072; 
cmStaffMoveAppoint = 9079; 
cmStaffPasspForm = 9112;

Re: Создание контексного меню

Добавлено: 04 мар 2015, 18:57
Алексей
Спасибо...погляжу завтра.
Я правильно понимаю - нет статуслайна - фиг Вам а не горячая клавиша? Или допустим я хочу создать свой набор горячих клавиш - не судьба?

Re: Создание контексного меню

Добавлено: 04 мар 2015, 19:28
Maverick
Ну почему же... можно. Только нафига? Имеющихся стандартных - вполне достаточно. http://www.tyumbit.ru/gal_forum/viewtop ... +sci#p2002 тебе в помощь для изучения.

Re: Создание контексного меню

Добавлено: 05 мар 2015, 16:21
Алексей
Да читал я это всё :) Вот к примеру я хочу три своих горячих клавиши, Alt+z Alt+x Alt+c - как мне подобрать нужное мне контекст меню?
Плюс к этому хочу чтобы браузер работал по ф7 ф8 ф4 ... тупо листаешь и ищешь? Согласитесь, фигня какая то получается, неужели нельзя было проще способ описания хоткеев сделать?

Re: Создание контексного меню

Добавлено: 05 мар 2015, 17:56
Maverick
Ну что я могу сказать на это... Хотеть - не вредно. Вредно - не хотеть. Есть стандарты разработки интерфейсов, в т.ч. и касающиеся статус-лайнов. Он не на пустом месте писаны. Не нравится вам стандартный набор - пишите свой. В отдельном файле. Подключайте в проект. Компилируйте. Пользуйтесь.
По мне так лучше из готовых кирпичиков пристрой к дому строить (из таких же, как и дом построен), чем открывать производство кирпичей на дому из песка, воды, глины, соды и чего-то там еще, и все для того, чтобы пару кубов кирпича заюзать.

Re: Создание контексного меню

Добавлено: 05 мар 2015, 20:17
Алексей
ясно :) займёмся поиском подходящего sci :)