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

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

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



Зарегистрирован: 13.03.2010
Сообщения: 10
Откуда: МО, Голицыно

СообщениеДобавлено: Пт Окт 21, 2011 9:32 am    Заголовок сообщения: Составить выражение Добавить ответ со ссылкой на данный текст

Ребят, подскажите пожалуйста. В таблице есть символьный столбец "name", все поля пустые. Хочу, чтобы при заполнении изменялся цвет полигона. Т.е. заполнено - регион красный, пустое поле - цвет по умолчанию. Ну или направьте на путь истинный)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Андрей Могильный



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

СообщениеДобавлено: Пн Окт 24, 2011 4:24 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Только с помощью тематического слоя.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Vovik



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

СообщениеДобавлено: Ср Ноя 02, 2011 6:48 am    Заголовок сообщения: Re: Составить выражение Добавить ответ со ссылкой на данный текст

Можно попробовать такой вариант (разумеется название таблиц и стили могут быть какие угодно)
Т.к. MapInfo не имеет события по изменению данных в колонке таблицы, запуск процедуры Procedura… осуществлен через изменение выборки
В принципе эту проблему (отсутствия события) можно решить
Коментировать код излишне.
Include "MAPBASIC.DEF"
Include "Icons.def"
Include "MENU.DEF"
Declare Sub Main
Declare Sub Procedura(ByVal row_id As Integer)
Declare Sub SelChangedHandler
Dim r0, r1 As Integer
Sub Main
End Sub
Sub Procedura(ByVal row_id As Integer)
Dim Zn, tablica As string
Dim Metka As Object
Dim objtype As SmallInt
Dim BorderStyle As Pen
Dim BrushStyle As Brush
OnError GoTo dd
If SelectionInfo(SEL_INFO_NROWS) = 1 Then
tablica = SelectionInfo(SEL_INFO_TABLENAME)
If tablica <> "Регионы" Then Exit SUB End If
Fetch First From Selection
Metka = selection.obj
Zn = selection.name
If Zn = "" Then
BorderStyle =MakePen (1,1,0) ' по умолчанию
BrushStyle = MakeBrush(2, 16776960, 16777215)
else
BorderStyle =MakePen (2,2,256)
BrushStyle = MakeBrush(2, 16711935, 1677721)
End If

objtype = ObjectInfo(Metka,OBJ_INFO_TYPE)
If (objtype = 7) or (objtype = 2) or (objtype = 8) or (objtype = 9) Then ' Если REGION или ELLIPSE или RECT или ROUNDRECT
Alter Object Metka Info OBJ_INFO_BRUSH, BrushStyle
Update tablica Set Obj= Metka where RowId = row_id
Alter Object Metka Info OBJ_INFO_PEN, BorderStyle
Update tablica Set Obj= Metka where RowId = row_id
End If
End If

dd:
End Sub
Sub SelChangedHandler
OnError Goto dd
If CommandInfo(CMD_INFO_SELTYPE) = 1 Then r0 = CommandInfo(CMD_INFO_ROWID ) End If '1 – если строка была добавлена
If CommandInfo(CMD_INFO_SELTYPE) = 2 Then r1 = CommandInfo(CMD_INFO_ROWID ) End If '2 – если строка была исключена из предыдущей выборки
If (r0 = 0) or (r1 = 0) Then Exit SUB End If
If r0 <> r1 Then Call Procedura(r0) End If
dd:
End Sub
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Андрей Могильный



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

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

Понятно, что перекрасить объект с помощью MapBasic-команд - проблем нет. Я подозреваю, что ключевое в исходном посте:
"Хочу, чтобы при заполнении изменялся цвет полигона"

А за изменение данных в таблицах у MapInfo обработчика нет :( Так что автоматически только тематикой сверху.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

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


Top.Mail.Ru