Страница 4 из 6
Re: Как узнать имя локального меню?
Добавлено: 31 янв 2011, 17:05
m0p3e
Повторный запуск необходим в случае, если разработчики меню изменили. Если не переинициализировать свои доработки, то оно останется без новых пунктов.
Re: Как узнать имя локального меню?
Добавлено: 31 янв 2011, 17:11
Vik
Я понимаю, что вы хотите проверку на существование меню сделать. Просто функция эта вам не поможет, она отслеживает состояние пунктов меню. Это следует хотя бы из ее названия. Если бы вы все-таки прочитали посты выше, как я вам советовал, вы бы увидели один из способов реализации проверки на то, было меню изменено уже или нет. Теперь об ошибке. Вы как указываете имя меню? Необходимо с указанием компоненты.
Код: Выделить всё
.......
if(not MenuChanged('MENU L_SKLAD::SKLOPER') )
{
if (UserIsAdmin)
{
var iMenu: longint;
iMenu := LoadMenuEx ( 'L_SKLAD::SKLOPER', true, false);
AddMenuItem ( iMenu, 'separator', 666 );
AddMenuItemEx2 ( iMenu, 'КАЛЬКУЛЯТОР', '', '', cmRunInterface, 0, 'AtlCalc' );
StoreMenuHowDynamics ( iMenu, 'L_SKLAD::SKLOPER' );
DisposeLoadMenu ( iMenu );
}
}
.........
Function MenuChanged(nameMenu: string): boolean;
{
result := (RecordExists X$Resources where (( 3 == X$Resources.XR$Type
and nameMenu == X$Resources.XR$Name))
= tsOk);
}
Function UserIsAdmin: boolean;
{
result := false;
if (GetFirst FastFirstRow X$Users where (( UserId == X$Users.Atl_NRec)) = tsOk)
result := (X$Users.Xu$Type = 1);
}
Заходим в Складской учет - Операции - Калькулятор
Re: Как узнать имя локального меню?
Добавлено: 01 фев 2011, 09:39
n0where
Подключил ресурс через саппорт, меню создано )
Но проблема образовалась в другом: Мой нтерфейс каким то образом перешёл в объекты, а в списке интерфейсах его нет.
Не хотит ))
Увидел что подключаю как компонент ) Как правильно подключить ресурсник в таком случае?
Re: Как узнать имя локального меню?
Добавлено: 01 фев 2011, 14:16
n0where
Все разобрался. теперь по меню.
Сделал как вы сказали - все отлично получилось. Но при отключении ресурса меню то не пропадает, а это не правильно, нужно чтобы при подключении менюшка появлялась, а при отключении скрывалась.
Re: Как узнать имя локального меню?
Добавлено: 01 фев 2011, 23:07
edward_K
а зачем отключать? Скройте протектом кому не надо и все.
Re: Как узнать имя локального меню?
Добавлено: 02 фев 2011, 08:10
n0where
Почемуто в Галактике все так говорят, а зачем это делать можно сделать так через заднюю дверь. Неправильная концепция
Потому что это правильно. Например сейчас мой ресер полдключен к нескольким людям разрешенный, а общий запрещен. Но менюшка то у всех показана. Это не правильно же.
Re: Как узнать имя локального меню?
Добавлено: 02 фев 2011, 09:59
Ренат
Может тогда удалять меню при выходе из интерфейса?
Re: Как узнать имя локального меню?
Добавлено: 02 фев 2011, 10:24
n0where
Ренат писал(а):Может тогда удалять меню при выходе из интерфейса?
Это если юзает галактику один юзер. А если их много? перекроется. не канает )))
Re: Как узнать имя локального меню?
Добавлено: 02 фев 2011, 11:17
Vik
edward_K писал(а):Скройте протектом кому не надо и все.
n0where, чем же плох этот вариант?
n0where писал(а):Почемуто в Галактике все так говорят, а зачем это делать можно сделать так через заднюю дверь. Неправильная концепция
Чем ваша дверь с подключением ресурсов конкретным пользователям более передняя? Для чего тогда вообще Protect делали, если это, вдруг, стало неправильной концепцией?)
Re: Как узнать имя локального меню?
Добавлено: 02 фев 2011, 11:30
n0where
Такая ситуация:
Через протект дал права юзерам,
Потом через саппорт всем обрубил ресурс, в итоге не рабочее меню.
Случай частный, и врядли так будет использоваться, но я имею ввиду принцип.
Re: Как узнать имя локального меню?
Добавлено: 02 фев 2011, 11:44
Vik
Так можно про любой ресурс Галактики сказать) По-моему, это уже ваша задача правильно организовать работу с вашим же ресурсом. Если отключили ресурс, позаботьтесь, чтоб и меню было удалено. Например, напишите утилиту, которая при запуске Галактики проверяет, подключен ли нужный ресурс, если нет, то зачищает за отключенным интерфейсом все "следы".
Re: Как узнать имя локального меню?
Добавлено: 02 фев 2011, 12:32
n0where
Спасибо очень помогли
Re: Как узнать имя локального меню?
Добавлено: 02 фев 2011, 12:41
Vik
Если это сарказм, то он явно не уместен. Я вам сказал одно из возможных решений. Хотите, чтоб я его и реализовал еще?
Таблицы Components, X$Resources, точки расширения - посмотрите, почитайте.
Re: Как узнать имя локального меню?
Добавлено: 02 фев 2011, 13:46
n0where
нет не сорказм. Спасибо за пояснение и обсуждение.
Я просто понял что нет смысла пытаться делать в ВИПе так как привык в Делфи, ПХП и др языках.
Re: Как узнать имя локального меню?
Добавлено: 02 фев 2011, 13:50
m0p3e
Есть точка расширения на вход в модуль. Вот там можно пытаться обыграть ситуацию, но динамическое меню в данном случае не годится. Нужно искать возможность менять меню для сеанса пользователя.