Как узнать имя локального меню?

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

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

Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Как узнать имя локального меню?

Сообщение Vik »

Так меню создается один раз, один единственный раз! Перед созданием меню вы проверяете, не было ли оно уже создано (смотрите в таблице X$Resources) и, если уже оно было создано, больше не создаете. В этом случае будет достаточно после создания ресурса самому запустить Галактику и запустить интерфейс, создав тем самым меню под админом (вы же админ?), а пользователи уже будут просто использовать уже созданное меню и не надо им ничего создавать. Другое дело, в какой момент создавать меню, я привел пример из события инициализации, edward_K предлагает при проверке реестра настроек, делаете так, как считаете правильным. Но пользователям это меню создавать не требуется. Надеюсь, так понятнее. Ну уж, если не получается так, изменяйте меню в саппорте, если есть такая возможность, но это самый неудобный способ, на мой взгляд.

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

 
  if(RecordExists X$Resources where ((                                                     3 == X$Resources.XR$Type 
                                                        and 'MENU L_KATORG::mnuKatOrgEdit' == X$Resources.XR$Name
                            ))
       != tsOk)
  {
!       меню еще не создавали, создаем
      m_Menu := LoadMenuEx ('L_KATORG::mnuKatOrgEdit', true, false);
      AddMenuItem(m_Menu, 'Сформировать адрес из внешнего Кладра',cmValue41);
      StoreMenuHowDynamics (m_Menu, 'L_KATORG::mnuKatOrgEdit');
      DisposeLoadMenu (m_Menu);
     
  }
! блок else в этом случае не нужен - меню уже было создано ранее 
 
Загляните в саппорте в x$Resources, должно все встать на свои места.
Ренат
Постоянный обитатель
Сообщения: 194
Зарегистрирован: 12 сен 2007, 16:34
Откуда: Глазов
Контактная информация:

Re: Как узнать имя локального меню?

Сообщение Ренат »

Действительно меню появилось у всех пользователей. Супер. Прямо от сердца отлегло!
Посмотрел X$Resourse описание меню появлилось.
Через сапорт не получиться. Нет у нас такой лицензии.
Всем спасибо!
Ренат
Постоянный обитатель
Сообщения: 194
Зарегистрирован: 12 сен 2007, 16:34
Откуда: Глазов
Контактная информация:

Re: Как узнать имя локального меню?

Сообщение Ренат »

Случилось что то с локальным меню L_KATORG::mnuKatOrgEdit :cry:
Подскажите пожалуйста какое имя локального меню запускающегося в окне редактирования атрибутов ораганизации. Окно Window L_KATORG::KatOrg.wKatOrg Screen scKatOrg.
Просмотрел !GSDK.chm но так и не понял какое меню теперь запускается.
LaaLaa

Re: Как узнать имя локального меню?

Сообщение LaaLaa »

Ренат писал(а):Случилось что то с локальным меню L_KATORG::mnuKatOrgEdit :cry:
Подскажите пожалуйста какое имя локального меню запускающегося в окне редактирования атрибутов ораганизации. Окно Window L_KATORG::KatOrg.wKatOrg Screen scKatOrg.
Просмотрел !GSDK.chm но так и не понял какое меню теперь запускается.

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

PutHotCommand(RunMenu('mnuKatOrgEdit'));

заменили на

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

PutHotCommand(RunDynMenu('C_COMMON::Print_HotKeys;SEPARATOR;C_COMMON::AttrClass_HotKeys'));
Ренат
Постоянный обитатель
Сообщения: 194
Зарегистрирован: 12 сен 2007, 16:34
Откуда: Глазов
Контактная информация:

Re: Как узнать имя локального меню?

Сообщение Ренат »

Большое спасибо!
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Как узнать имя локального меню?

Сообщение n0where »

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

#ifdef ComponentVersion
  #component "l_sklad"
#end
alter interface L_SKLAD;code]

 Уменя ругается на alter interface L_SKLAD - типа такого интерфейса в ресерсе не найдено.
Конечно не найдено если его там нет, как подключить ресурс L_SKLAD? как правильно докомпилировать рекурс? в моём случае меню
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Как узнать имя локального меню?

Сообщение Vik »

Можно сделать альтер интерфейса, а не компонента (а вы указали именно имя компонента). Как изменить меню, читайте этот пост, все обсуждалось уже неоднократно.
Ренат
Постоянный обитатель
Сообщения: 194
Зарегистрирован: 12 сен 2007, 16:34
Откуда: Глазов
Контактная информация:

Re: Как узнать имя локального меню?

Сообщение Ренат »

у меня в fcom.cfg просписана строчка:

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

/resources:%GalPath%\L_KatOrg.res
у Вас будет наверное

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

/resources:%GalPath%\L_SKLAD.res
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Как узнать имя локального меню?

Сообщение n0where »

Можно сделать альтер интерфейса, а не компонента (а вы указали именно имя компонента). Как изменить меню, читайте этот пост, все обсуждалось уже неоднократно.
Как тогда мне узнать имя интерфейса? если я знаю в какое меню (SKLOPER) мне необходимо добавить свой пункт?

Или в качестве интерфейса использовать SKLOPER, но в консоле управления нет такого интерфейса L_SKLAD::SKLOPER.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Как узнать имя локального меню?

Сообщение Vik »

Чтоб узнать название интерфейса, запускаете этот интерфейс, встаете в какое-либо поле, жмете Ctrl+F4, в первом поле ввода вводите getifccurrentfieldname, жмете Enter, во втором поле ввода будет полное имя текущего поля в виде (в самом простом случае):

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

<Имя компонента>::<Имя интерфейса>.[<Имя окна>].<Имя Screen или browse>.<Имя поля>.
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Как узнать имя локального меню?

Сообщение n0where »

Это то все понятно, только вот в чем проблема то... Мне же надо глобальное меню модуля Складской учет изменить, меню находится не в интерфейсах же...
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Как узнать имя локального меню?

Сообщение m0p3e »

n0where писал(а):Это то все понятно, только вот в чем проблема то... Мне же надо глобальное меню модуля Складской учет изменить, меню находится не в интерфейсах же...
А при чем здесь вообще alter интерфейс?
Главное меню, не принадлежит никакому интерфейсу. Как добавить пункт в него уже обсуждалось и не раз.

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

   DeleteMenuHowDynamics ( 'Z_STAFFMENU::StaffAdminMenu' );
   iMenu := LoadMenuEx ( 'Z_STAFFMENU::StaffAdminMenu', true, false);
   AddMenuItem ( iMenu, 'separator', 666 );
   AddMenuItemEx2 ( iMenu, 'Проверка назначений', '', '', cmRunInterface, 0, 'Z_Staff::CheckVacancy' );
   AddMenuItemEx2 ( iMenu, 'Проверка образования', '', '', cmRunInterface, 0, 'Z_Staff::CheckEducation' );
   StoreMenuHowDynamics ( iMenu, 'Z_STAFFMENU::StaffAdminMenu' );
   DisposeLoadMenu ( iMenu );
Выполняется один раз из под админа. Потом в случае выхода обновления на Z_STAFFMENU.
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Как узнать имя локального меню?

Сообщение n0where »

В принципе тогда можно сделать через GetMenuItemState проверку - существует ли меню, если нет создать его... Если вшивать в init. но опять же при компиляции пишет, что меню в ресурсе не найдено
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Как узнать имя локального меню?

Сообщение Vik »

Что-то вы и сами запутались и нас запутали. Причем тут функция GetMenuItemState? Вам же привели готовый код, как изменить меню верхнего уровня. И сказали, что делать надо, по сути, один раз администратором. Никаких альтер интерфейсов не нужно, и уж тем более непонятно, зачем проверять состояние пункта меню)) Можете при запуске галки сделать изменение меню, если запущена она админом, можете еще что-то придумать - это уже другой вопрос. Читайте выше этот пост.
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Как узнать имя локального меню?

Сообщение n0where »

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

Ну это как реализация скажем так: в клюбом случае у меня ошибка при запуске - меню в ресурсе не найдено, в Випере я подключил ресурс через опции в проекте.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Ответить