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