Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 |
|
Вернуться к началу |
|
|
disciple
Зарегистрирован: 06.02.2011 Сообщения: 3
|
Добавлено: Пн Апр 11, 2011 4:03 pm Заголовок сообщения: |
|
|
Спасибо большое, теперь все работает |
|
Вернуться к началу |
|
|
|