Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Дмитрий
Зарегистрирован: 27.07.2006 Сообщения: 14 Откуда: Кемерово
|
Добавлено: Пн Авг 28, 2006 12:17 pm Заголовок сообщения: как узнать координату точки |
|
|
Здраствуйте,
Начал заниматься интегрированной картографией.много неудобств т.к. перевожу на с#.
МэпБэйсика у меня нет и ,соответственно, нету и примеров.Работаю по книге "среда разработки : мэп бэйсик" . Кое что уже сделал. Застопорился на следующем вопросе:Нужно определить координаты точки карты, куда ткнул мышкой.аргумент в функции commandwindow скорее всего неправильный, т.к. def файлов тоже нету.но это можно подобрать.
//обработчик кнопки "выбрать"
{
string s;
MI.RunMenuCommand(1701);
s=(string)MI.Eval("CommandInfo(15)");
}
выдает ошибку:аргумент 2 вышел за заданные пределы
что я не правильно делаю?Или вообще нужно подходить с другой стороны?Вообще поясните пожалуйста, что происхоит при нажатии мышкой на карту(в mapinfo -окно map basic никакой информации не выдает) для понимания принципа. |
|
Вернуться к началу |
|
|
Дмитрий
Зарегистрирован: 27.07.2006 Сообщения: 14 Откуда: Кемерово
|
Добавлено: Чт Авг 31, 2006 12:58 pm Заголовок сообщения: |
|
|
пришел к выводу что неправильно все делаю..((
через ole командную строчку map-info интегрировать в свое приложение удалось сразу а вот определить коорднаты нет.
как по описанию
написал произвольную функцию-обработчик при применении инструмента
public void SelectXY(string str)
{
this.Text=MI.Eval("CommandInfo(CMD_INFO_X)");
this.Text+=MI.Eval("CommandInfo(CMD_INFO_Y)");
//или this.text=str;
}
нужно переопределить стандартные кнопки панели "Операции"
и им указать метод- Calling OLE f1
так вот в примерах везде делают через добавление новых кнопок на панель,тогда как будет вестись стандартная обработка??
ерунда типа этом не проходит
MI.Do("Alter ButtonPad ID 1 Alter Button Calling OLE SelectXY ");
всяко пробовал но всегда одна ошибка: переменная или поле не определена. Как будно map- info ждет свою какую-то функцию.
Ни одного нормальнго примера НЕТ!
Буду рад объяснению или нормальному примеру определения координаты клика. |
|
Вернуться к началу |
|
|
Дмитрий
Зарегистрирован: 27.07.2006 Сообщения: 14 Откуда: Кемерово
|
Добавлено: Ср Сен 20, 2006 4:30 am Заголовок сообщения: |
|
|
Неужели никто не знает как получить координаты точки, где применили инструмент..! Я уже и в реестре регистрировал свою сборку.Строку состояния передает, а в произвльную функцию нет.И никто не может сказать что неправильно я делаю.
MI.Do("Alter ButtonPad ID 1 Alter Button Calling OLE \"SelectXY\" ID 1701 ");
..
..
public void SelectXY(string str)
{
this.Text=MI.Eval("CommandInfo(CMD_INFO_X)");
this.Text+=MI.Eval("CommandInfo(CMD_INFO_Y)");
//или this.text=str;
} |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Ср Сен 20, 2006 8:28 am Заголовок сообщения: |
|
|
Ты строку состояния получил? Ну дык вот там и есть координаты (если она включена в этом режиме, если не включена, то включи сам)! Вычленяй их из строки состояния и храни у себя. При каждом изменении строки состояния (читай - координат курсора мыши), ты снова получишь строку состояния, снова вычленяй координаты и храни у себя, при необходимости на этом же событии делай обработку. |
|
Вернуться к началу |
|
|
Дмитрий
Зарегистрирован: 27.07.2006 Сообщения: 14 Откуда: Кемерово
|
Добавлено: Чт Сен 21, 2006 4:55 am Заголовок сообщения: |
|
|
1)такая мысль была,но так я буду получать текущие координаты, но нужно то когда я применяю инструмент.Так как мой picturebox в котором отображается карта уже не реагирует на стандартные события(нажатие мыши в данном случае) и,поэтому я не буду здать в каком месте ткнул мышкой, поэтому хотелось бы способом , которым не получается .
2)а насчет приведенного кода..логика хоть правильная ?Если строка состояния передается, то, теоретически, программа может принимать сообщения от mapinfo(т.е. работает как ole сервер,дело в том что в c# нет оле или activeX проектов ) .... а нельзя ли выложить примеры mapbasic с интегрированной картографией, так как у меня нет совсем или на мыло nizinkin@mail.ru
Буду весьма признателен. |
|
Вернуться к началу |
|
|
Дмитрий
Зарегистрирован: 27.07.2006 Сообщения: 14 Откуда: Кемерово
|
Добавлено: Пн Сен 25, 2006 7:29 am Заголовок сообщения: |
|
|
Спасибо , буду смотреть :shock: |
|
Вернуться к началу |
|
|
|