Доп. пункт в меню

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

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

beatlov
Посетитель
Сообщения: 31
Зарегистрирован: 29 сен 2009, 13:29
Откуда: Ухта

Доп. пункт в меню

Сообщение beatlov »

Всем Добрый день!
У меня проблема с добавлением нового пункта в выпадающем меню((( ( ПК "Галактика" 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
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Доп. пункт в меню

Сообщение Den »

как min не хватает StoreMenuHowDynamics
beatlov
Посетитель
Сообщения: 31
Зарегистрирован: 29 сен 2009, 13:29
Откуда: Ухта

Re: Доп. пункт в меню

Сообщение beatlov »

Спасибо за ответ. Но StoreMenuHowDynamics - функция для динамического меню.
I just shot John Lennon
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Доп. пункт в меню

Сообщение edward_K »

1. inherited::handleEvent(cmHotKeys); имхо лишнее.
2. Getifccurrentfieldname плиз.
3. LogStrTofile или message Вам в помощь. Наиболее вероятное, что вы не попадаете в нужное место обработчика, ну или что еще бывает - так что рес ваш перекрыт еще чем то - проверьте через сервис - утилиты - запуск интерфейса , что запуск идет именно из вашего ресурса. С виду то все нормально.
MenuID := LoadMenu(ww_Str);
AddMenuItemEx(MenuID,'????????????????????????????','',cmAlt9,kbAlt9)
PutHotCommnad( RunLoadMenu(MenuID))
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Доп. пункт в меню

Сообщение Den »

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

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);
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Доп. пункт в меню

Сообщение edward_K »

if StoreMenuHowDynamics(l_menuID,'F_SFO::SFO_NormEdit_HotKeys1'){}
Ну это тоже вариант - только журнал посмотрите - зачем лишние действия?
Вы ж по факту переписываете меню в x$resource каждый раз.
Тогда уж сделайте в момент проверки настроек.
beatlov
Посетитель
Сообщения: 31
Зарегистрирован: 29 сен 2009, 13:29
Откуда: Ухта

Re: Доп. пункт в меню

Сообщение beatlov »

Спасибо за ответы! Решилось все без динамического меню. С динамическим меню - там все серьезно)))) в x$resource страшновато лезть))) просто убрал inherited)
I just shot John Lennon
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Доп. пункт в меню

Сообщение edward_K »

Принято писать как 8)
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Доп. пункт в меню

Сообщение Den »

ну убирать inherited тоже фиг знает - это означает ведь забить болт на все будущие изменения какие, теоретически, могут внести в обработчик события данный прикладники.
Так что вопрос риторический что лучше - перекрыть все событие или меню динамическое сделать в данном конкретном случае.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Доп. пункт в меню

Сообщение edward_K »

В очень редких случаях меню набивается из нескольких, блокируются какие то строчки и т.п.
В принципе перекрытие меню неплохая идея(я так добавляю меню в модуль) - но место не удачное - это надо сделать раз и забыть до следующей установки патчей.
beatlov
Посетитель
Сообщения: 31
Зарегистрирован: 29 сен 2009, 13:29
Откуда: Ухта

Re: Доп. пункт в меню

Сообщение beatlov »

Все таки проблема.... пункт в меню добаляется... но при этом он заменяет один существующий пункт ...что делать?? все таки инхерит делать?
I just shot John Lennon
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Доп. пункт в меню

Сообщение edward_K »

getifccurrentfieldname
beatlov
Посетитель
Сообщения: 31
Зарегистрирован: 29 сен 2009, 13:29
Откуда: Ухта

Re: Доп. пункт в меню

Сообщение beatlov »

Через эту функцию имя меню ж не узнать?
Вот результат.
'F_SFO::EDITNORMSFO.WINEDITNORMSFO.BRNORMDATESFO.NORMDATESFO.FRDATE'
При изучении F_SFO.chm - определил, что это F_SFO::SFO_NormEdit_HotKeys1
I just shot John Lennon
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Доп. пункт в меню

Сообщение edward_K »

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

  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'));
  }
то есть для 2 случая вам нужно добавить к вашему новому меню второе. Без исхов к сожалению вы это не узнаете. Метод DEN в этом случае универсальней, но не зачем каждый раз сохранять меню в cmHotKeys.
beatlov
Посетитель
Сообщения: 31
Зарегистрирован: 29 сен 2009, 13:29
Откуда: Ухта

Re: Доп. пункт в меню

Сообщение beatlov »

Спасибо!!! Все получилось!!! Вот код,может кому-нибудь понадобится.
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
Ответить