Доп. пункт в меню
Модераторы: m0p3e, edward_K, Модераторы
Доп. пункт в меню
Всем Добрый день!
У меня проблема с добавлением нового пункта в выпадающем меню((( ( ПК "Галактика" 9)
Модуль "Спецодежда" > Настройка->Нормы выдачи спецодежды ->Форма "Редактирование нормы выдачи специальной (фирменной) одежды".
Необходимо добавить новый пункт меню в выпадающем меню части экрана "Начало - Окончание"
Опытным путем узнал наименование меню - "F_SFO::SFO_NormEdit_HotKeys". Наимнование окна: WinEditNormSFO
Все делал по примерам... Что получилось - данный пункт не появился в главном выпадающем меню, НО выборе пункта "Печать" -печать не осуществляется, а выпадает как раз нужное меню. Не совсем понятно, что такое
Код такой:
const
cmDoDataMTO = 990099;
cmtest1 = 990102;
End;
#component 'F_SFO'
alter interface EDITNORMSFO;
overload end;
var l_menuID,l_menuID2:longint ;
ln_nrec:comp;
window WinEditNormSFO;
HandleEvent
cmHotKeys:
{
inherited::handleEvent(cmHotKeys);
l_menuID := LoadMenu('F_SFO::SFO_NormEdit_HotKeys');
AddMenuItemEx2(l_menuID,'***.Генерация норм для спецодежды' , '' ,'',cmDoDataMTO, 0,'');
PutHotCommand(RunLoadMenu(l_menuID));
}
cmDoDataMTO:
IF RunInterface('SPECODSMN::SpecOd_001', NORMSFO.NREC)<>cmDefault
{
}
end;
end;
end.
У меня проблема с добавлением нового пункта в выпадающем меню((( ( ПК "Галактика" 9)
Модуль "Спецодежда" > Настройка->Нормы выдачи спецодежды ->Форма "Редактирование нормы выдачи специальной (фирменной) одежды".
Необходимо добавить новый пункт меню в выпадающем меню части экрана "Начало - Окончание"
Опытным путем узнал наименование меню - "F_SFO::SFO_NormEdit_HotKeys". Наимнование окна: WinEditNormSFO
Все делал по примерам... Что получилось - данный пункт не появился в главном выпадающем меню, НО выборе пункта "Печать" -печать не осуществляется, а выпадает как раз нужное меню. Не совсем понятно, что такое
Код такой:
const
cmDoDataMTO = 990099;
cmtest1 = 990102;
End;
#component 'F_SFO'
alter interface EDITNORMSFO;
overload end;
var l_menuID,l_menuID2:longint ;
ln_nrec:comp;
window WinEditNormSFO;
HandleEvent
cmHotKeys:
{
inherited::handleEvent(cmHotKeys);
l_menuID := LoadMenu('F_SFO::SFO_NormEdit_HotKeys');
AddMenuItemEx2(l_menuID,'***.Генерация норм для спецодежды' , '' ,'',cmDoDataMTO, 0,'');
PutHotCommand(RunLoadMenu(l_menuID));
}
cmDoDataMTO:
IF RunInterface('SPECODSMN::SpecOd_001', NORMSFO.NREC)<>cmDefault
{
}
end;
end;
end.
I just shot John Lennon
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Доп. пункт в меню
как min не хватает StoreMenuHowDynamics
Re: Доп. пункт в меню
Спасибо за ответ. Но StoreMenuHowDynamics - функция для динамического меню.
I just shot John Lennon
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Доп. пункт в меню
1. inherited::handleEvent(cmHotKeys); имхо лишнее.
2. Getifccurrentfieldname плиз.
3. LogStrTofile или message Вам в помощь. Наиболее вероятное, что вы не попадаете в нужное место обработчика, ну или что еще бывает - так что рес ваш перекрыт еще чем то - проверьте через сервис - утилиты - запуск интерфейса , что запуск идет именно из вашего ресурса. С виду то все нормально.
MenuID := LoadMenu(ww_Str);
AddMenuItemEx(MenuID,'????????????????????????????','',cmAlt9,kbAlt9)
PutHotCommnad( RunLoadMenu(MenuID))
2. Getifccurrentfieldname плиз.
3. LogStrTofile или message Вам в помощь. Наиболее вероятное, что вы не попадаете в нужное место обработчика, ну или что еще бывает - так что рес ваш перекрыт еще чем то - проверьте через сервис - утилиты - запуск интерфейса , что запуск идет именно из вашего ресурса. С виду то все нормально.
MenuID := LoadMenu(ww_Str);
AddMenuItemEx(MenuID,'????????????????????????????','',cmAlt9,kbAlt9)
PutHotCommnad( RunLoadMenu(MenuID))
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Доп. пункт в меню
Код: Выделить всё
DeleteMenuHowDynamics('F_SFO::SFO_NormEdit_HotKeys1')
l_menuID := LoadMenu('F_SFO::SFO_NormEdit_HotKeys1');
AddMenuItemEx2(l_menuID,'***.Генерация норм для спецодежды' , '' ,'',cmDoDataMTO, 0,'');
if StoreMenuHowDynamics(l_menuID,'F_SFO::SFO_NormEdit_HotKeys1'){}
inherited::handleEvent(cmHotKeys);
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Доп. пункт в меню
Ну это тоже вариант - только журнал посмотрите - зачем лишние действия?if StoreMenuHowDynamics(l_menuID,'F_SFO::SFO_NormEdit_HotKeys1'){}
Вы ж по факту переписываете меню в x$resource каждый раз.
Тогда уж сделайте в момент проверки настроек.
Re: Доп. пункт в меню
Спасибо за ответы! Решилось все без динамического меню. С динамическим меню - там все серьезно)))) в x$resource страшновато лезть))) просто убрал inherited)
I just shot John Lennon
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Доп. пункт в меню
Принято писать как
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Доп. пункт в меню
ну убирать inherited тоже фиг знает - это означает ведь забить болт на все будущие изменения какие, теоретически, могут внести в обработчик события данный прикладники.
Так что вопрос риторический что лучше - перекрыть все событие или меню динамическое сделать в данном конкретном случае.
Так что вопрос риторический что лучше - перекрыть все событие или меню динамическое сделать в данном конкретном случае.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Доп. пункт в меню
В очень редких случаях меню набивается из нескольких, блокируются какие то строчки и т.п.
В принципе перекрытие меню неплохая идея(я так добавляю меню в модуль) - но место не удачное - это надо сделать раз и забыть до следующей установки патчей.
В принципе перекрытие меню неплохая идея(я так добавляю меню в модуль) - но место не удачное - это надо сделать раз и забыть до следующей установки патчей.
Re: Доп. пункт в меню
Все таки проблема.... пункт в меню добаляется... но при этом он заменяет один существующий пункт ...что делать?? все таки инхерит делать?
I just shot John Lennon
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Доп. пункт в меню
getifccurrentfieldname
Re: Доп. пункт в меню
Через эту функцию имя меню ж не узнать?
Вот результат.
'F_SFO::EDITNORMSFO.WINEDITNORMSFO.BRNORMDATESFO.NORMDATESFO.FRDATE'
При изучении F_SFO.chm - определил, что это F_SFO::SFO_NormEdit_HotKeys1
Вот результат.
'F_SFO::EDITNORMSFO.WINEDITNORMSFO.BRNORMDATESFO.NORMDATESFO.FRDATE'
При изучении F_SFO.chm - определил, что это F_SFO::SFO_NormEdit_HotKeys1
I just shot John Lennon
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Доп. пункт в меню
Код: Выделить всё
cmHotKeys:
{
if (RecordExists VarZamDate where (( NormSFO.nRec == VarZamDate.cNormSFO and
NormDateSFO.FrDate == VarZamDate.frDate and
cgNormZamBord <<= VarZamDate.NewDate (NoIndex) )) <> tsOk)
PutHotCommand(RunMenu('SFO_NormEdit_HotKeys1'));
else
PutHotCommand(RunDynMenu('F_SFO::SFO_NormEdit_HotKeys1' + ';' + 'SEPARATOR' + ';' + 'F_SFO::SFO_NormEdit_Zamen'));
}
Re: Доп. пункт в меню
Спасибо!!! Все получилось!!! Вот код,может кому-нибудь понадобится.
cmHotKeys:
{
if (RecordExists VarZamDate where (( NormSFO.nRec == VarZamDate.cNormSFO and
NormDateSFO.FrDate == VarZamDate.frDate and
cgNormZamBord <<= VarZamDate.NewDate (NoIndex) )) <> tsOk)
{
PutHotCommand(RunDynMenu('F_SFO::SFO_NormEdit_HotKeys1' + ';SEPARATOR;'+'F_SFO::mnMTO_'));
}
else
{
PutHotCommand(RunDynMenu('F_SFO::SFO_NormEdit_HotKeys1' + ';SEPARATOR;' + 'F_SFO::SFO_NormEdit_Zamen'+';SEPARATOR;'+'F_SFO::mnMTO_'));
}
}
mnMTO_ Menu //меню для заголовков заявок
{
-----------;//разделитель //hcWindows
-'***.Генерация норм для спецодежды' ,cmDoDataMTO ,'***.Генерация норм для спецодежды' , ,'F7' ,,scMenuCtx;
-----------;
}
cmHotKeys:
{
if (RecordExists VarZamDate where (( NormSFO.nRec == VarZamDate.cNormSFO and
NormDateSFO.FrDate == VarZamDate.frDate and
cgNormZamBord <<= VarZamDate.NewDate (NoIndex) )) <> tsOk)
{
PutHotCommand(RunDynMenu('F_SFO::SFO_NormEdit_HotKeys1' + ';SEPARATOR;'+'F_SFO::mnMTO_'));
}
else
{
PutHotCommand(RunDynMenu('F_SFO::SFO_NormEdit_HotKeys1' + ';SEPARATOR;' + 'F_SFO::SFO_NormEdit_Zamen'+';SEPARATOR;'+'F_SFO::mnMTO_'));
}
}
mnMTO_ Menu //меню для заголовков заявок
{
-----------;//разделитель //hcWindows
-'***.Генерация норм для спецодежды' ,cmDoDataMTO ,'***.Генерация норм для спецодежды' , ,'F7' ,,scMenuCtx;
-----------;
}
I just shot John Lennon