| Предыдущая тема :: Следующая тема | 
	
	
		| Автор | Сообщение | 
	
		| Hunter 
 
 
 Зарегистрирован: 29.08.2006
 Сообщения: 9
 Откуда: Belarus
 
 | 
			
				|  Добавлено: Вт 11 Сен 2007 15:44    Заголовок сообщения: Контекстное меню |   |  
				| 
 |  
				| Как  сделать чтобы принажатии правой кнопки мыши выскакивало контекстное меню и в нем была строчка меню, которая выполняла бы конкретную задачу?   |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| RuslanG 
 
  
 Зарегистрирован: 10.07.2005
 Сообщения: 171
 Откуда: ИНТЕГРО
 
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Hunter 
 
 
 Зарегистрирован: 29.08.2006
 Сообщения: 9
 Откуда: Belarus
 
 | 
			
				|  Добавлено: Чт 20 Сен 2007 09:58    Заголовок сообщения: |   |  
				| 
 |  
				| При подключении модуля TestIngeo выдает ошибку   Модуль "D:\WORKS\GIS\TestIngeoMouseUp\TestIngeo.dll" не содержит функции "M2DllRegisterAddOn" [0x007F].
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| RuslanG 
 
  
 Зарегистрирован: 10.07.2005
 Сообщения: 171
 Откуда: ИНТЕГРО
 
 | 
			
				|  Добавлено: Чт 20 Сен 2007 10:08    Заголовок сообщения: |   |  
				| 
 |  
				| TestIngeo является программным модулем. В данном случае Вы пытались установить программный модуль как модуль расширения. Последовательность установки программных модулей следующая:
 
 Зарегистрировать модуль командой "regsvr32.exe <имя файла модуля>" ("regsvr32 TestIngeo.dll").
Запустить ГИС "ИнГео". 
Выполнить команду в меню Файл > Программные модули > ИнГео… 
В появившемся окне нажать кнопку "Импорт…" и выбрать файл с расширением inm необходимого модуля (TestIngeoMouseUp.inm).
Затем после нажатия на кнопку "Открыть" в появившемся диалоговом окне "Импорт программных модулей" необходимо отметить импортируемый модуль и нажать кнопку "ОК". 
Отметить "галочкой" вновь добавленный программный модуль и закрыть окно "Программные модули".
 После успешной установки модуля TestIngeo при нажатии правой клавиши мыши на окне карты появится контекстное меню.
 _________________
 С уважением, Руслан Гадеев
 Видео уроки ИнГео
 Документация ИнГео
 Обновления ИнГео
 Интегропедия
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| andreichernov 
 
 
 Зарегистрирован: 14.02.2005
 Сообщения: 209
 Откуда: Самара
 
 | 
			
				|  Добавлено: Пт 21 Сен 2007 12:54    Заголовок сообщения: |   |  
				| 
 |  
				| Руслан, от Вашего примера очень мало толку, ибо он за счет StopHandler переопределяет стандартное контекстное
 меню Ингео, которое активно используется при, скажем, редактировании или создании объекта.
 Функции Ингео, возвращающей текущий режим, чтобы в зависимости от него менять поведение, я не нашел.
 С уважением, Андрей Чернов.
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Алексей В. Бастриков 
 
 
 Зарегистрирован: 02.06.2008
 Сообщения: 118
 Откуда: ООО "Инфопроект", г. Екатеринбург
 
 | 
			
				|  Добавлено: Пт 13 Май 2011 10:51    Заголовок сообщения: |   |  
				| 
 |  
				| Вот пример контекстного меню. Программный модуль необходимо подключать к проекту, чтобы при автоматическом запуске можно было определить дескриптор окна карты.
 
 
 
 
	
		
	 
		| Описание: |  |  Скачивание
 |  
		| Название файла: | Контекстное меню.rar |  
		| Размер файла: | 59.16 KB |  
		| Скачено: | 1246 раз(а) |  
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Iron_Man 
 
 
 Зарегистрирован: 02.09.2011
 Сообщения: 20
 
 
 | 
			
				|  Добавлено: Пн 19 Сен 2011 17:53    Заголовок сообщения: |   |  
				| 
 |  
				| Пожалуйста, подскажите мне, не знающему тонкостей сишарпа, как будет выглядеть код из последнего сообщения, на Delphi? В примере на Delphi выше применён другой метод, который хоть и работает, но всё равно в Ингео вызывается старое popupmenu, и вызываются команды из него, а в последнем примере вроде то, что надо. Спасибо. |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Iron_Man 
 
 
 Зарегистрирован: 02.09.2011
 Сообщения: 20
 
 
 | 
			
				|  Добавлено: Вт 20 Сен 2011 20:47    Заголовок сообщения: |   |  
				| 
 |  
				|  	  | Код: |  	  | procedure TCoMaps.OnMouseUp(aButton: TIngeoMouseButton; aShift: TIngeoShiftState; aX, aY: SYSINT);
 var
 aPoint: TPoint;
 men: IInUIMenu;
 begin
 if aButton = inmbRight then
 begin
 FApplication.MainWindow.MapWindow.StopHandler;
 if FApplication.Selection.Count = 1 then
 begin
 GetCursorPos(aPoint);
 aForm.FillPopupMenu;
 aForm.ObjPopupMenu.Popup(aPoint.X, aPoint.Y);
 end;
 end;
 end;
 | 
 У меня вопрос к знающим, почему при вызове этой процедуры всё равно вызывается контекстное меню Ингео, несмотря на  FApplication.MainWindow.MapWindow.StopHandler ?
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Алексей В. Бастриков 
 
 
 Зарегистрирован: 02.06.2008
 Сообщения: 118
 Откуда: ООО "Инфопроект", г. Екатеринбург
 
 | 
			
				|  Добавлено: Ср 21 Сен 2011 08:59    Заголовок сообщения: |   |  
				| 
 |  
				| А данный обработчик вообще срабатывает? |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		| Iron_Man 
 
 
 Зарегистрирован: 02.09.2011
 Сообщения: 20
 
 
 | 
			
				|  Добавлено: Ср 21 Сен 2011 12:33    Заголовок сообщения: |   |  
				| 
 |  
				| Алексей В. Бастриков, OnMouseUp вообще срабатывает. И моё меню появляется. Но - иногда срабатывают пункты из ингеовского контекстного меню объектов. Иногда оно просто показывается, когда я, например, не выбираю ничего из своего меню и щёлкаю правой кнопкой где-то в другом месте. В общем не работает эта ерунда:
 . 	  | Код: |  	  | FApplication.MainWindow.MapWindow.StopHandler | 
 |  | 
	
		| Вернуться к началу |  | 
	
		|  | 
	
		|  |