Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 |
Скачено: |
1189 раз(а) |
|
|
Вернуться к началу |
|
 |
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 | .
|
|
Вернуться к началу |
|
 |
|