mapbasic - вызов стандартной процедуры mapinfo

MapInfo, MapBasic
Ответить
Аватара пользователя
Juls
Интересующийся
Сообщения: 49
Зарегистрирован: 02 авг 2010, 10:30
Репутация: 1

mapbasic - вызов стандартной процедуры mapinfo

Сообщение Juls »

Здравствуйте

Помогите пожалуйста со следующим вопросом:
мне нужно из процедуры вызвать стандартный инструмент панели мапинфо. с вызовом я разобралась, как потом передать управление обратно процедуре?

допустим:
sub somesub
set map redraw off
set map layer 0 editable on selectable on
run menu command 1710
set map redraw on
end sub

как после выполнения команды run menu command сохранить то, что было добавлено на карте при помощи стандартного инструмента?
Аватара пользователя
asgs
Участник
Сообщения: 89
Зарегистрирован: 04 авг 2010, 06:35
Репутация: 1
Контактная информация:

Re: mapbasic - вызов стандартной процедуры mapinfo

Сообщение asgs »

Управление и так перейдет обратно в процедуру, вызывающую функцию.
Сохранить таблицу - Commit Table. Впрочем, с косметического слоя, как в данном случае, можно сохранить только в рабочем наборе, либо перенести косметику в таблицу, где объекты и сохранятся.
ЗЫ И еще сильно рекомендовал бы подключать файл menu.def (Include "menu.def") и использовать вместо целочисленных строковые идентификаторы команд, чтобы потом не вспоминать по полчаса, что имелось в виду под command 1710 ;)
ЗЗЫ И кстати, сохранять что-либо автоматически после выполнения одной функции - плохая идея. Проверено многократно.
Злобный йожег
Аватара пользователя
Juls
Интересующийся
Сообщения: 49
Зарегистрирован: 02 авг 2010, 10:30
Репутация: 1

Re: mapbasic - вызов стандартной процедуры mapinfo

Сообщение Juls »

Сохранить таблицу - Commit Table. Впрочем, с косметического слоя, как в данном случае, можно сохранить только в рабочем наборе, либо перенести косметику в таблицу, где объекты и сохранятся..
уже делала, но таблица после закрытия остается пустой.
ЗЫ И еще сильно рекомендовал бы подключать файл menu.def (Include "menu.def") и использовать вместо целочисленных строковые идентификаторы команд, чтобы потом не вспоминать по полчаса, что имелось в виду под command 1710 ;)
хорошо бы, если только полчаса :D
ЗЗЫ И кстати, сохранять что-либо автоматически после выполнения одной функции - плохая идея. Проверено многократно.
подскажите, как лучше сделать, чтобы объекты добавленные пользователем потом могли участвовать в sql запросах?
Аватара пользователя
asgs
Участник
Сообщения: 89
Зарегистрирован: 04 авг 2010, 06:35
Репутация: 1
Контактная информация:

Re: mapbasic - вызов стандартной процедуры mapinfo

Сообщение asgs »

Опишите Вашу задачу более полно, так проще будет подсказывать ;) Не исключено, что нечто подобное я уже решал и есть готовые решения.
Про участие объектов в запросе - теоретически, к объекту можно обратиться сразу после его добавления в таблицу, даже без сохранения этой самой таблицы.
Сохранить объекты с косметического слоя в таблицу Карта->Сохранить косметику... Дальше будет диалог с выбором таблицы.
Злобный йожег
Аватара пользователя
Juls
Интересующийся
Сообщения: 49
Зарегистрирован: 02 авг 2010, 10:30
Репутация: 1

Re: mapbasic - вызов стандартной процедуры mapinfo

Сообщение Juls »

пользователь рисует на карте область, после этого нужно сделать выбор всего что в эту область попало.
область сохранять в таблице не нужно.
задача такая, нужно сделать это средствами мипанфо и мапбэйсика.
Аватара пользователя
asgs
Участник
Сообщения: 89
Зарегистрирован: 04 авг 2010, 06:35
Репутация: 1
Контактная информация:

Re: mapbasic - вызов стандартной процедуры mapinfo

Сообщение asgs »

Выбирать предполагается из какой-то определенной таблицы, или из всех открытых в карте?
Во втором случае стандартно выбрать не получится, выборка возможна максимум из одной таблицы.
А для первого случая стандартная кнопка "Выбор в полигоне" не годится?
Злобный йожег
Аватара пользователя
Juls
Интересующийся
Сообщения: 49
Зарегистрирован: 02 авг 2010, 10:30
Репутация: 1

Re: mapbasic - вызов стандартной процедуры mapinfo

Сообщение Juls »

из нескольких таблиц, открытых в карте,
стандарный "выбор в полигоне" не годится..
Аватара пользователя
asgs
Участник
Сообщения: 89
Зарегистрирован: 04 авг 2010, 06:35
Репутация: 1
Контактная информация:

Re: mapbasic - вызов стандартной процедуры mapinfo

Сообщение asgs »

В таком случае есть два пути с рисованием области.
1 - Рисовать область стандартным инструментом в косметическом слое, выделять ее (к выделенному объекту на косметике получить доступ можно по SelObj = Selection.obj), затем по нажатию кнопки (которую нужно еще добавить ;)) в цикле проходиться по слоям активной карты и выполнять Select * From layer_name Into SelTable_i Where obj Intersects SelObj, где i - номер слоя. Имя таблицы в слое можно получить по LayerInfo(). В этом случае получится несколько временных таблиц, в которых будут содержаться объекты таблиц физических, входящие в выделенный объект. Минусы - таблицы будут плодться в больших количествах, в идеале хорошо бы вести их список и перед началом следующей выборки их нафиг закрывать.
2 - Делать кнопку типа ToolButton с типом DM_CUSTOM_POLYGON и в ее обработчике получить по CommandInfo(CMD_INFO_CUSTOM_OBJ) собственно объект, по которому будет проводиться выборка. Далее все по пункту 1.
Вот как-то так.
Злобный йожег
Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя