Страница 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
Подскажите пожалуйста какое имя локального меню запускающегося в окне редактирования атрибутов ораганизации. Окно Window L_KATORG::KatOrg.wKatOrg Screen scKatOrg.
Просмотрел !GSDK.chm но так и не понял какое меню теперь запускается.
Re: Как узнать имя локального меню?
Добавлено: 26 янв 2011, 11:27
LaaLaa
Ренат писал(а):Случилось что то с локальным меню L_KATORG::mnuKatOrgEdit
Подскажите пожалуйста какое имя локального меню запускающегося в окне редактирования атрибутов ораганизации. Окно Window L_KATORG::KatOrg.wKatOrg Screen scKatOrg.
Просмотрел !GSDK.chm но так и не понял какое меню теперь запускается.
заменили на
Код: Выделить всё
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 просписана строчка:
у Вас будет наверное
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 надо прописать проверку на есть ли меню, если нет создать...
Ну это как реализация скажем так: в клюбом случае у меня ошибка при запуске - меню в ресурсе не найдено, в Випере я подключил ресурс через опции в проекте.