Страница 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