Страница 3 из 6

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

Добавлено: 27 сен 2010, 21:16
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, должно все встать на свои места.

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

Добавлено: 28 сен 2010, 15:03
Ренат
Действительно меню появилось у всех пользователей. Супер. Прямо от сердца отлегло!
Посмотрел X$Resourse описание меню появлилось.
Через сапорт не получиться. Нет у нас такой лицензии.
Всем спасибо!

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

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

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

Добавлено: 26 янв 2011, 11:27
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'));

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

Добавлено: 26 янв 2011, 11:38
Ренат
Большое спасибо!

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

Добавлено: 31 янв 2011, 14:58
n0where

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

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

 Уменя ругается на alter interface L_SKLAD - типа такого интерфейса в ресерсе не найдено.
Конечно не найдено если его там нет, как подключить ресурс L_SKLAD? как правильно докомпилировать рекурс? в моём случае меню

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

Добавлено: 31 янв 2011, 15:02
Vik
Можно сделать альтер интерфейса, а не компонента (а вы указали именно имя компонента). Как изменить меню, читайте этот пост, все обсуждалось уже неоднократно.

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

Добавлено: 31 янв 2011, 15:07
Ренат
у меня в fcom.cfg просписана строчка:

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

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

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

/resources:%GalPath%\L_SKLAD.res

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

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

Или в качестве интерфейса использовать SKLOPER, но в консоле управления нет такого интерфейса L_SKLAD::SKLOPER.

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

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

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

<Имя компонента>::<Имя интерфейса>.[<Имя окна>].<Имя Screen или browse>.<Имя поля>.

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

Добавлено: 31 янв 2011, 15:40
n0where
Это то все понятно, только вот в чем проблема то... Мне же надо глобальное меню модуля Складской учет изменить, меню находится не в интерфейсах же...

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

Добавлено: 31 янв 2011, 16:16
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.

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

Добавлено: 31 янв 2011, 16:29
n0where
В принципе тогда можно сделать через GetMenuItemState проверку - существует ли меню, если нет создать его... Если вшивать в init. но опять же при компиляции пишет, что меню в ресурсе не найдено

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

Добавлено: 31 янв 2011, 16:39
Vik
Что-то вы и сами запутались и нас запутали. Причем тут функция GetMenuItemState? Вам же привели готовый код, как изменить меню верхнего уровня. И сказали, что делать надо, по сути, один раз администратором. Никаких альтер интерфейсов не нужно, и уж тем более непонятно, зачем проверять состояние пункта меню)) Можете при запуске галки сделать изменение меню, если запущена она админом, можете еще что-то придумать - это уже другой вопрос. Читайте выше этот пост.

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

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

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