Страница 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
Есть точка расширения на вход в модуль. Вот там можно пытаться обыграть ситуацию, но динамическое меню в данном случае не годится. Нужно искать возможность менять меню для сеанса пользователя.