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

Стиль и метод отображения

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



Зарегистрирован: 09.10.2006
Сообщения: 158
Откуда: Ярославль

СообщениеДобавлено: Ср 15 Сен 2010 14:31    Заголовок сообщения: Стиль и метод отображения Ответить с цитатой

Господа, может кто сталкивался. Есть проблема. Копирую объекты в стиль, который не содержит методов отображения(импортом или программно-без разницы), затем в проводнике добавляю метод отображения, но объектов не видно на карте. не видно даже если заселектить объект в таблице(допустим запрос по стилю) и перейти в режим редактирования.
ситуацию исправляет только замена на другой стиль с изначально существующим методом отображения.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Сергей Попов



Зарегистрирован: 05.03.2005
Сообщения: 299
Откуда: г. Тольятти - Самара - Копейск

СообщениеДобавлено: Ср 15 Сен 2010 16:09    Заголовок сообщения: Re: Стиль и метод отображения Ответить с цитатой

Я по другому поставлю вопрос:
Что заставляет Вас именно так это делать? Почему стиль не содержит методов отображения?
Я не сталкивался с подобным вероятно по тому, что хоть маломальский метод у любого моего стиля обязательно есть.

_________________
г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Foton



Зарегистрирован: 09.10.2006
Сообщения: 158
Откуда: Ярославль

СообщениеДобавлено: Ср 15 Сен 2010 17:11    Заголовок сообщения: Re: Стиль и метод отображения Ответить с цитатой

Сергей Попов писал(а):

Что заставляет Вас именно так это делать?

1. импортировал шейпы, торопился, стили создал, методы добавить забыл.
2. в прошлом делал модуль расширения по разделению слоя на линии, полигоны и точки. в мануле программиста как добавить метод не нашел, добавлял просто новый стиль и в него сливал объекты.

задам тогда вопрос по другому: как программно добавить метод? поправлю тогда старый свой утиль
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Сергей Попов



Зарегистрирован: 05.03.2005
Сообщения: 299
Откуда: г. Тольятти - Самара - Копейск

СообщениеДобавлено: Ср 15 Сен 2010 17:41    Заголовок сообщения: Re: Стиль и метод отображения Ответить с цитатой

Foton писал(а):
задам тогда вопрос по другому: как программно добавить метод? поправлю тогда старый свой утиль

Пример Руслана Гадеева на ObjectPascal, демонстрирующий создание новой карты, слоя, стиля со стандартным методом отображения вам наверно подойдёт

_________________
г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Foton



Зарегистрирован: 09.10.2006
Сообщения: 158
Откуда: Ярославль

СообщениеДобавлено: Чт 16 Сен 2010 14:41    Заголовок сообщения: Ответить с цитатой

Сергей, не совсем, мне под API
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Сергей Попов



Зарегистрирован: 05.03.2005
Сообщения: 299
Откуда: г. Тольятти - Самара - Копейск

СообщениеДобавлено: Чт 16 Сен 2010 15:12    Заголовок сообщения: Ответить с цитатой

Вернусь к примеру, вроде там всё есть.
В вашем случае территория, карта, слой и стиль уже определены, и переменная aStyle: IIngeoStyle имеет нужное значение.
Тогда остаётся только:
Код:
   // Создает стандартный метод отображения у стиля aStyle
   function CreateStdPainter(aStyle: IIngeoStyle): IIngeoStdPainter;
   begin
      Result := aStyle.Painters.Add(inptStd) as IIngeoStdPainter;
      // При необходимости меняем параметры окантовки
      with Result.Pen do begin
         Style := inpsSolid;
         WidthInMM := 0;
         ForZoomScale := 0;
         Color := clBlack;
         Mode := inpmCopy;
      end;
      // При необходимости меняем параметры закраски
      with Result.Brush do begin
         Style := inbsSolid;
         BackColor := clWhite;
         HatchColor := clBlack;
         Transparency := 0;
      end;
      aStyle.Update;
   end;

Ключевым является: Result := aStyle.Painters.Add(inptStd) as IIngeoStdPainter;
Всё это есть и в IngeoIntfs.chm

_________________
г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Foton



Зарегистрирован: 09.10.2006
Сообщения: 158
Откуда: Ярославль

СообщениеДобавлено: Пт 17 Сен 2010 11:45    Заголовок сообщения: Ответить с цитатой

Сергей Попов писал(а):

Всё это есть и в IngeoIntfs.chm

Сергей, это код под актив-икс. мой старый утиль в виде Addon-модуля расширения.
нашел в общем, поправил, вроде работает.
интересно все же, почему не подхватывается стиль? получается у объекта прописывается в базе не только стиль, но еще и метод...следовательно получается метод отображения не только атрибут стиля, но еще атрибут каждого объекта..?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Сергей Попов



Зарегистрирован: 05.03.2005
Сообщения: 299
Откуда: г. Тольятти - Самара - Копейск

СообщениеДобавлено: Сб 18 Сен 2010 14:08    Заголовок сообщения: Ответить с цитатой

Не буду спорить, помочь хотел как умею.
Коль Вы справились, тогда прошу выложить свой вариант, думаю что пригодится многим.

Предположение: "следовательно получается метод отображения не только атрибут стиля, но еще атрибут каждого объекта..?" считаю не верным.
Была изначальная ошибка - отсутствие метода. Это важная (КАРДИНАЛЬНАЯ) ошибка, хотя может быть ИнГЕО не заострил ваше внимание на ней. Ведь когда Вы явно, ручками пытаетесь удалить единственный метод он Вам сообщает о противоестественности ваших действий.
А уж КАРДИНАЛЬНАЯ ошибка может выстрелить где угодно. Немудрено.

Всё равно что родить ребёнка, но принципиально не получать на него свидетельства о рождении и задавать вопрос: - «Почему с ним не выпускают за границу?». Допустим дошло что нужно свидетельство, пошли за ним в ЗАГС, там тоже не всё просто как у всех, опять вопросы - "Почему вовремя вы этого не сделали? - Где справка из роддома и вот вам квитанция на штраф?" А роддом тоже простой: - "Да рожали, справку Вам выдавали, ищите у себя. Потеряли, выкинули, тогда это не к нам. Может Вам в суд?".
Вывод: последовательность предписанных действий лучше не нарушать.

Задам ещё вопросы для подтверждения или опровержения догадок.
Имеем:
Слой с формами стиля, в котором отсутствуют методы. Они не отображаются. Добавили методы, формы всё равно не отображаются.
Предлагаю:
1. Завершаем работу клиента ИнГЕО, и запускаем по новой. Какой результат? Видно или нет?
2. Если на предыдущем шаге всё-же не видно, тогда пробуем остановить сервер ИнГЕО и запустить по новой. Что изменилось?

Жду результатов ваших экспериментов. Мог бы и сам, да лень.

_________________
г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Foton



Зарегистрирован: 09.10.2006
Сообщения: 158
Откуда: Ярославль

СообщениеДобавлено: Пн 20 Сен 2010 15:33    Заголовок сообщения: Ответить с цитатой

добавление нового стиля со стандартным методом:
Код:
const
   MyPainterAtr: TM2PainterAttrs = (
      Name: '';
      VisibleMin: 0;
      VisibleMax: 0;
      Reserved: 0;
    PainterType: 0;
   );
  defStyleAtr: TM2StyleAttrs = (
    Name: 'NewStyle';
    Flags: ksfDefineGeometry;
    CreationFlags: 0;
    BeginCreationType: 0;
    BeginOrtho: false;
    EndCreationType: 0;
      EndOrtho: false;
      MinPoints: 1;
      MaxPoints: 0;
      Reserved: 0;
  );
.....

             newStyle:=FAddon.GISDatabase.AddStyle(FAddon.MapProject.ActiveLayer, defStyleAtr);
             aStyle.OleObject:=FAddon.GISDatabase.GetStyle(newStyle);
             aStyle.AddPainter(MyPainterAtr);



про роддом - это все софистика.

Цитата:

Предлагаю:
1. Завершаем работу клиента ИнГЕО, и запускаем по новой. Какой результат? Видно или нет?
2. Если на предыдущем шаге всё-же не видно, тогда пробуем остановить сервер ИнГЕО и запустить по новой. Что изменилось?

1 - не видно.
2 - ничего не меняется.
помогает только замена стиля на стиль с методом.

Цитата:

Вывод: последовательность предписанных действий лучше не нарушать.

предписаний по методам не видел. сделал как было проще.
коли это "КАРДИНАЛЬНАЯ" ошибка, тогда для избежания этого стоило при создания слоя сразу создавать и стиль, и метод отображения. ведь не может в слое не быть хоть одного стиля? вот! спор в общем ни о чем.
вопрос получается скорее к разработчикам. проблема есть, но не серьезная.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Сергей Попов



Зарегистрирован: 05.03.2005
Сообщения: 299
Откуда: г. Тольятти - Самара - Копейск

СообщениеДобавлено: Пн 20 Сен 2010 17:26    Заголовок сообщения: Ответить с цитатой

Извиняй Foton старого софиста.
Пусть в споре родиться истина или подсказка для разработчиков.

_________________
г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Foton



Зарегистрирован: 09.10.2006
Сообщения: 158
Откуда: Ярославль

СообщениеДобавлено: Вт 21 Сен 2010 10:50    Заголовок сообщения: Ответить с цитатой

Сергей Попов писал(а):
...или подсказка для разработчиков.

жаль вот только появляются они здесь раз в пятилетку. что странно, если учесть, что это их прямая финансовая выгода. Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Сергей Попов



Зарегистрирован: 05.03.2005
Сообщения: 299
Откуда: г. Тольятти - Самара - Копейск

СообщениеДобавлено: Вт 21 Сен 2010 11:56    Заголовок сообщения: Ответить с цитатой

Foton писал(а):
жаль вот только появляются они здесь раз в пятилетку. что странно, если учесть, что это их прямая финансовая выгода. Sad

Да, появляются они тут редко. Да и форум нужен в первую очередь пользователям по принципу: "спасение утопающих - дело рук самих утопающих".
Для связи со службой технической поддержки есть почтовый адрес. Если туда писать, то отзываются достаточно оперативно.

Служба технической поддержки:
Тукаев Рустам Рифатович
Гадеев Руслан Ирикович
email: support@integro.ru
Тел./факс: (347) 232-91-53, 232-12-41, 248-98-12, 237-88-81

_________________
г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Михаил Власов



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

СообщениеДобавлено: Пт 24 Сен 2010 16:07    Заголовок сообщения: Ответить с цитатой

Foton писал(а):
жаль вот только появляются они здесь раз в пятилетку. что странно, если учесть, что это их прямая финансовая выгода. Sad


Форум мы читаем регулярно (по несколько раз на день).

Отвечаем хоть и не всегда, но тоже не редко.

По существу вопроса - при создании объекта его границы расчитываются исходя из методов отображения. Если у стиля методов нет, то у объекта будут нулевые границы. При изменении стиля границы объектов не пересчитываются.

Добавили в список пожеланий расчет границ объекта по контуру для случая, когда у стиля нет методов отображения.

_________________
С уважением, Михаил Власов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Foton



Зарегистрирован: 09.10.2006
Сообщения: 158
Откуда: Ярославль

СообщениеДобавлено: Пт 24 Сен 2010 17:51    Заголовок сообщения: Ответить с цитатой

Теперь понятно. Спасибо, Михаил! Когда ожидается выход нового билда?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Сергей Попов



Зарегистрирован: 05.03.2005
Сообщения: 299
Откуда: г. Тольятти - Самара - Копейск

СообщениеДобавлено: Пн 27 Сен 2010 10:01    Заголовок сообщения: Ответить с цитатой

Foton писал(а):
... это код под актив-икс. мой старый утиль в виде Addon-модуля расширения

Вернусь к этой теме, она мне не давала покоя.
Проверил примеры программных модулей на http://integro.ru/dl/ingeo/examples/index.htm. Там подходящего примера не нашлось.
Но есть ещё места. На http://www.integro.ru/projects/gis/develop.htm есть исходные тексты модуля "Поиска объектов по заданному шаблону".
В файле TemplateSearchAddOnImp.pas есть следующий текст:
Код:
procedure TTemplateSearchAddOn.OpenSearchForm(aTemplate: TSearchTemplate);
var
   aForm: TTemplateSearchForm;
   anApplication: IIngeoApplication;
begin
   anApplication := GetIngeo(Self);

Т.е. есть исходники Addon-модуля, в котором легко и просто осуществляется доступ к библиотеке, описанной в IngeoIntfs.chm

Есть ещё вопрос к Михаилу Власову:
Стало быть подправите расчёт первичный, который осуществляется при создании объекта.
Может ли так произойти, что в результате изменения методов отображения, они перестанут согласовываться с расчётными границами объекта (формы), определяемыми однократно - в момент создания объекта (формы)?
Осознаю, что если это и так, то это пылинка в сравнении с другими слонами. Её можно озвучить - "Да, гипотетические такое возможно, имейте в виду". В самом крайнем случае можно предусмотреть в API инструмент принудительного пересчёта границ.

_________________
г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Михаил Власов



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

СообщениеДобавлено: Пн 27 Сен 2010 14:14    Заголовок сообщения: Ответить с цитатой

Сергей Попов писал(а):
Стало быть подправите расчёт первичный, который осуществляется при создании объекта.
Может ли так произойти, что в результате изменения методов отображения, они перестанут согласовываться с расчётными границами объекта (формы), определяемыми однократно - в момент создания объекта (формы)?

Рассинхронизация границ может иметь место только в одном случае - при изменении параметров текстового метода отображения (например, при увеличении размеров шрифта). Следствием такого изменения может стать частичное обрезание текста на границе объекта, например при прокрутке карты.

Во всех других случаях (например, при увеличении толщины окантовки стандартного метода), объекты будут отображаться и позиционироваться правильно.

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

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


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