Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Вопрос Мише Власову

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
Кузнецов Андрей



Зарегистрирован: 22.04.2005
Сообщения: 28
Откуда: Магнитогорск

СообщениеДобавлено: Ср 26 Окт 2005 16:03    Заголовок сообщения: Вопрос Мише Власову Ответить с цитатой

Михаил, я пытаюсь реализовать идею динамической "подмены" стиля.
Пишу код в ИнГео. Все хорошо, но не нашел описания метода "PaintContour" у стиля, а точнее последнего его параметра.
Стиль в моем случае рисует данные из семантической таблицы, и, видимо параметр "aData" должен содержать их, но в каком виде не понял.
Вот код:
' Вызывается перед рисованием каждого слоя
sub DbPaint_LayerWillPaint(aSurface, aLayerID, aVisible)
Dim MOS
Dim MO
Dim Contour
Dim NightStyle
Dim MOQ
Dim PaintData

If aLayerID <> "000100000E65" Then Exit Sub

' Подмена стиля
Set NightStyle = Application.ActiveDb.StyleFromID("00010002E12D")

Set MOS = Application.ActiveDb.MapObjects
Set MOQ = MOS.QueryByStyle("000100002337", inqsAll)

Do While Not MOQ.EOF
Set MO = MOS.GetObject(MOQ.ObjectID)
Set Contour = MO.Shapes.Item(0).Contour

' Здесь не понятно !!!!
PaintData = MO.SemData.GetValue("RFCITIES", "NAME_RWIN")
NightStyle.PaintContour aSurface, Contour, PaintData

MOQ.MoveNext
Loop
end sub
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Наталья Колонтай



Зарегистрирован: 01.11.2005
Сообщения: 22
Откуда: Москва

СообщениеДобавлено: Чт 10 Ноя 2005 12:44    Заголовок сообщения: Изменение стиля Ответить с цитатой

Мне удалось решить эту проблему через изменение индекса стиля у форм объекта. Не забудь потом обновить набор объектов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Кузнецов Андрей



Зарегистрирован: 22.04.2005
Сообщения: 28
Откуда: Магнитогорск

СообщениеДобавлено: Вт 15 Ноя 2005 12:55    Заголовок сообщения: Re: Изменение стиля Ответить с цитатой

Наталья Колонтай писал(а):
Мне удалось решить эту проблему через изменение индекса стиля у форм объекта. Не забудь потом обновить набор объектов.

Уважаемая, Наталья. Очень буду рад примеру кода, я не совсем понял Вашу идею.
Поясню, то что хочу я: нужно рисовать в динамике текст другим цветом, при этом не меняя параметров стиля объекта, чтобы другие пользователи работающие в это время не испытали "дискомфорта". Дублировать объекты не желательно (их десятки тысяч), поэтому хотелось бы "на лету" рисовать по своему. Очень симпотичен вариант, когда стиль уже определен и его бы просто использовать, но есть непонятности, о которых я писал ранее.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Азаматов Азамат Хадисович



Зарегистрирован: 17.02.2005
Сообщения: 100
Откуда: г. Учалы, Респ. Башкортостан

СообщениеДобавлено: Вт 15 Ноя 2005 20:27    Заголовок сообщения: Ответить с цитатой

А нельзя просто рисовать после рисования слоя?
Тогда просто то что вы нарисуете в модуле перекроет на экране "штатную" отрисовку
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Наталья Колонтай



Зарегистрирован: 01.11.2005
Сообщения: 22
Откуда: Москва

СообщениеДобавлено: Ср 16 Ноя 2005 14:32    Заголовок сообщения: Ответить с цитатой

Мне нужно было перехватывать работу пользователя и "перекрашивать" объекты. В Delphi механизм перекрашивания реализовывался так
theObjShapes:= theObject.Shapes;//Берем коллекцию фигур объекта
for j:=0 to theObjShapes.Count-1 do begin
theObjShape:=theObjShapes.Item[j];//Берем фигуру
theObjShape.StyleID:=IDZUStyleOtkr;//Присваиваем ее индексу стиля новое значение
end;
theObjects.UpdateChanges; //Обновляем объект
А подвешивать действительно пришлось на перерисовку слоев. Как уже говорила ранее- "Это не есть хорошо, господа разработчики".
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Михаил Власов



Зарегистрирован: 14.02.2005
Сообщения: 580
Откуда: ИНТЕГРО

СообщениеДобавлено: Чт 01 Дек 2005 21:44    Заголовок сообщения: Ответить с цитатой

Если стиль содержит текстовый метод отображения с форматными вставками вида "{name1} {name2}", то последний параметр метода PaintContour должен содержать подстановку для "name1" и "name2" в следующем виде:
Код:

PaintData = "name1=value1" & vbNewLine & "name2=value2"

В результате будет отображен текст "value1 value2".

_________________
С уважением, Михаил Власов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

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


© phpBB Group
Русская поддержка phpBB