| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		Кузнецов Андрей
 
 
  Зарегистрирован: 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    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				А нельзя просто рисовать после рисования слоя?
 
Тогда просто то что вы нарисуете в модуле перекроет на экране "штатную" отрисовку | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Наталья Колонтай
 
  
  Зарегистрирован: 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". _________________ С уважением, Михаил Власов. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |