Include "mapbasic.def" Declare Sub Main Declare Sub ToolHandler Sub Main Note "The ToolHandler demonstration is now in place. " + "Select the MapBasic tool (+) and click on a Map " + "to see a printout of map coordinates." End Sub Sub ToolHandler If WindowInfo( FrontWindow(), WIN_INFO_TYPE ) = WIN_MAPPER Then Print "X: " + Str$( CommandInfo(CMD_INFO_X) ) Print "Y: " + Str$( CommandInfo(CMD_INFO_Y) ) Print " " End If End Sub
MapBasic и все что с ним связаноМожет я не один такой?!
#41
Отправлено 20.05.2009, 18:48:25
#44
Отправлено 20.05.2009, 19:26:27
в принципе думаю где-то в районе Selection.Obj я найду то что мне нужно или хотя бы получу ключ чтобы в базу сходить за всем остальным, а вот как заставить его вызываться это совсем не понятно...
#45
Отправлено 20.05.2009, 19:31:31
Вот там обчно лежит вся литра: C:\Program Files\MapInfo\Professional\Documentation
и еще что значит передать в бибилотеку строковое значение? Ты же библиотеку юзаешь чтоб работать с ней в МБ а не наоброт, или я не прав?
#46
Отправлено 20.05.2009, 19:37:22
а по поводу того кто с кем работает: дело будет так пользователь откроет в MI таблицу с точками и при выборе любой точки необходимо получить данные связанные с этой точкой и обработать их, обработка будет происходить в форме нарисованной на .Net
#47
Отправлено 20.05.2009, 19:41:12
пролистай первые 6-7 глав из руководства пользователя МВ и ты сможешь сделать то что ты хочешь
#48
Отправлено 20.05.2009, 19:44:48
я и не сомневаюсь что это просто но с MB знаком пол дня
пролистай первые 6-7 глав из руководства пользователя МВ и ты сможешь сделать то что ты хочешь
уже листаю
#51
Отправлено 20.05.2009, 19:53:20
Dim o As Object o = Selection.Obj Dim s As Symbol s = ObjectInfo(o, OBJ_INFO_SYMBOL) Dim PointColor As Integer PointColor = StyleAttr(s, SYMBOL_COLOR)Вот таким вот образом я вытащил цвет точки, так же другими способами можешь вытащить все отсальные данные из этой точки!
Все я домой попер а то чтото зщадержался на работе сильно!
#54
Отправлено 21.05.2009, 16:54:12
А все таки как поймать момент когда пользователь что то делает? ну типа обработчик события переопределить...
Можно тулбаттон добавить в панель инструментов MapInfo. Тогда при выборе этой кнопки и нажатии в любой области карты будет срабатывать обработчик соотв. тулбаттона.
Вот пример:
Include "icons.def" Include "mapbasic.def" Declare Sub Main Declare Sub DoSomething Sub Main Alter ButtonPad ID 1 Add Separator Add ToolButton Icon MI_ICON_MAPSYMB_24 DrawMode DM_CUSTOM_POINT Cursor MI_CURSOR_CROSSHAIR Calling DoSomething HelpMsg "Нажми меня \n Нажми меня " Show End Sub Sub DoSomething Dim x, y As Float If WindowInfo(FrontWindow(), WIN_INFO_TYPE) = WIN_MAPPER Then x = CommandInfo(CMD_INFO_X) y = CommandInfo(CMD_INFO_Y) Note "DoSomething: " & Str$(x) & ", " & Str$(y) End If End Sub
#55
Отправлено 21.05.2009, 17:09:24
... и все-таки хотелось бы что бы пользователь не нажимал кнопочку на панельке после выбора точки а сразу после выбора передавался этот параметр...
При использования ToolButton, вместо PushButton как раз и не надо нажимать кнопку каждый раз при выборе точки. Достаточно один раз нажать на кнопку в начале, а затем кликать по точкам сколько душе будет угодно и каждый раз будет вызываться обработчик тулбаттона. В нем, при помощи CommandInfo извлекать координаты клика, а для нахождения объекта можно использовать функцию SearchPoint (точечные объекты ищутся с некоторым допущением по координатам)
#56
Отправлено 21.05.2009, 19:20:17
я сейчас попробовал использовать SelChangedHandler, потом можно проверить является ли выбранный объект точкой с помощью
object_name = Str$(Selection.obj) If object_name = "Point" Then ...
а потом получить данные из таблицы просто
print track.track_id print track.frame_idи дальше передавать их куда угодно.
P.S. Если у кого-то есть еще варианты хотелось бы взглянуть и на них.
Сообщение отредактировал Conkistador: 21.05.2009, 19:21:39
#57
Отправлено 21.05.2009, 20:23:31
Подключение MapInfo к .Net
Переопределение обработчика SelChangedHandler
#60
Отправлено 26.05.2009, 14:07:28
В документации есть пример как получить ссылку на запущенный экземпляр MapInfo с помощью VB,
To attach to a previously-running instance of MapInfo Professional which was not launched by a Visual Basic CreateObject( ) call, use Visual Basic’s GetObject( ) function. Set mapinfo = GetObject( , "MapInfo.Application")
Как сделать тоже самое с помощью C# ?
Количество пользователей, читающих эту тему: 1
пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0