www.map-info.ru :: Просмотр темы - Помогите с SelChangedHandler
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
disciple



Зарегистрирован: 06.02.2011
Сообщения: 3

СообщениеДобавлено: Сб Апр 09, 2011 10:15 pm    Заголовок сообщения: Помогите с SelChangedHandler Добавить ответ со ссылкой на данный текст

Здравствуйте, помогите пожалуйста. Есть следующее задание: нужно программно на MapBasic создать слой объектов, после чего нужно чтобы в зависимости от типа выбранного объекта выводилась какая-нибудь информация. Создал таблицу Objects, в неё добавил следующие объекты
Код:
   Insert Into Objects(obj, Name)
   Values(CreatePoint(0.3,0.1),"Point1")
   Insert Into Objects(obj, Name)
   Values(CreateLine(0,0,5,5),"Line1")

Затем я написал следующий обработчик SelChangedHandler
Код:
Sub SelChangedHandler
if ObjectInfo(Objects.obj, OBJ_INFO_TYPE)=OBJ_TYPE_POINT then
   Print("This is a point")
   elseif ObjectInfo(Objects.obj, OBJ_INFO_TYPE)=OBJ_TYPE_LINE then
   Print("This is a line")
   elseif ObjectInfo(Objects.obj, OBJ_INFO_TYPE)=OBJ_TYPE_PLINE then
   Print("This is a polyline")
   elseif ObjectInfo(Objects.obj, OBJ_INFO_TYPE)=OBJ_TYPE_REGION then
   Print("This is a region")
   elseif ObjectInfo(Objects.obj, OBJ_INFO_TYPE)=OBJ_TYPE_TEXT then
   Print("This is a text")
   else Print("This is another object")
   end if   
End Sub

Далее начинаются проблемы. Какой бы объект я не выделял мне всегда выводится "This is a line". Если при создании объектов поменять их местами, то будет всегда выводить "This is a point". Также, если у меня выделен, к примеру, точечный объект и я хочу выделить другой, то почему то сообщение выводится дважды. Объясните пожалуйста, как сделать чтобы правильно работало. Заранее спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Пн Апр 11, 2011 8:02 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

в (Sub SelChangedHandler ) сначала надо определить выбранную запись таблицы, через CommandInfo(), а потом уже у объекта этой записи смотреть тип. А то программа не понимает, к какому объекту обращаться
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alex_47



Зарегистрирован: 01.07.2009
Сообщения: 66
Откуда: Н.Новгород

СообщениеДобавлено: Пн Апр 11, 2011 1:59 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Или вот так:
Sub SelChangedHandler
if ObjectInfo(Selection.obj, OBJ_INFO_TYPE)=OBJ_TYPE_POINT then
Print("This is a point")
elseif ObjectInfo(Selection.obj, OBJ_INFO_TYPE)=OBJ_TYPE_LINE then
Print("This is a line")
elseif ObjectInfo(Selection.obj, OBJ_INFO_TYPE)=OBJ_TYPE_PLINE then
Print("This is a polyline")
elseif ObjectInfo(Selection.obj, OBJ_INFO_TYPE)=OBJ_TYPE_REGION then
Print("This is a region")
elseif ObjectInfo(Selection.obj, OBJ_INFO_TYPE)=OBJ_TYPE_TEXT then
Print("This is a text")
else Print("This is another object")
end if
End Sub
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
disciple



Зарегистрирован: 06.02.2011
Сообщения: 3

СообщениеДобавлено: Пн Апр 11, 2011 4:03 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Спасибо большое, теперь все работает Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru