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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
ApachiA
Постоянный гость
Сообщения: 58
Зарегистрирован: 29 мар 2005, 17:49
Откуда: -
Контактная информация:

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

Сообщение ApachiA »

Я знаю как создаются интерфесы но незнаю как создавать контексное меню допустим к какомуто бровсу
Кинте пожалуста простенкий примерчик как назначить горячие клавиши а то мои юзеры кнопки на мышах точно скоро сломают :)
ХОЧУ изучить правила написания ИНТЕРФЕЙСОВ, создание собственных контуров и компиляции ADF словарей :)
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

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

Сообщение m0p3e »

Используй событие cmHotKeys
cmHotKeys : PutHotCommand ( RunMenu ( 'PlanPost_HotKeys' ) );

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

PlanPost_HotKeys menu
{
- 'Расширенная информация (Ctrl+Enter)' , cmAttrib;
------------;
- 'Добавить позицию (F7)', cmInsert;
- 'Удалить позицию (F8)' , cmDelete;
------------;
}
ApachiA
Постоянный гость
Сообщения: 58
Зарегистрирован: 29 мар 2005, 17:49
Откуда: -
Контактная информация:

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

Сообщение ApachiA »

Спасибо бум пробывать!!!
ХОЧУ изучить правила написания ИНТЕРФЕЙСОВ, создание собственных контуров и компиляции ADF словарей :)
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

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

Сообщение Goblin »

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

P.S. Что в Support'e, что в VIP'е не хочет комплилиться ни меню, ни диалоги - вылетает ...кто мож подскажет - что за ботва ?
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
sth
Постоянный обитатель
Сообщения: 148
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение sth »

11 это вроде как cmcancel...

в випе была заморочка, что если в одном файле собрано все - код на випе, описание меню, статусы и т.д., то он падал...надо все по отдельным файлам раскладывать...может в этом дело?
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Сообщение Алексей »

Не могу создать меню на горячую клавишу F2. Вернее меню создается, мышкой вызвать можно, а вот сама горячая клавиша не работает.
Что надо указать? Какой статус интерфейсу?
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

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

Сообщение Den »

Насколько помню , там нужно чтобы в указанном статус-лайне эта команда была описана с соответствующей клавишей.
Ну т.е., указали sci1Esc в строке меню своем, если там(в ст. лайне этом) нет пары команда+клавиша таких то не будет работать горячая клавиша.
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

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

Сообщение 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;
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Сообщение Алексей »

Спасибо...погляжу завтра.
Я правильно понимаю - нет статуслайна - фиг Вам а не горячая клавиша? Или допустим я хочу создать свой набор горячих клавиш - не судьба?
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

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

Сообщение Maverick »

Ну почему же... можно. Только нафига? Имеющихся стандартных - вполне достаточно. http://www.tyumbit.ru/gal_forum/viewtop ... +sci#p2002 тебе в помощь для изучения.
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Сообщение Алексей »

Да читал я это всё :) Вот к примеру я хочу три своих горячих клавиши, Alt+z Alt+x Alt+c - как мне подобрать нужное мне контекст меню?
Плюс к этому хочу чтобы браузер работал по ф7 ф8 ф4 ... тупо листаешь и ищешь? Согласитесь, фигня какая то получается, неужели нельзя было проще способ описания хоткеев сделать?
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

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

Сообщение Maverick »

Ну что я могу сказать на это... Хотеть - не вредно. Вредно - не хотеть. Есть стандарты разработки интерфейсов, в т.ч. и касающиеся статус-лайнов. Он не на пустом месте писаны. Не нравится вам стандартный набор - пишите свой. В отдельном файле. Подключайте в проект. Компилируйте. Пользуйтесь.
По мне так лучше из готовых кирпичиков пристрой к дому строить (из таких же, как и дом построен), чем открывать производство кирпичей на дому из песка, воды, глины, соды и чего-то там еще, и все для того, чтобы пару кубов кирпича заюзать.
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Сообщение Алексей »

ясно :) займёмся поиском подходящего sci :)
Ответить