Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Foton
Зарегистрирован: 09.10.2006 Сообщения: 158 Откуда: Ярославль
|
Добавлено: Ср 15 Сен 2010 14:31 Заголовок сообщения: Стиль и метод отображения |
|
|
Господа, может кто сталкивался. Есть проблема. Копирую объекты в стиль, который не содержит методов отображения(импортом или программно-без разницы), затем в проводнике добавляю метод отображения, но объектов не видно на карте. не видно даже если заселектить объект в таблице(допустим запрос по стилю) и перейти в режим редактирования.
ситуацию исправляет только замена на другой стиль с изначально существующим методом отображения. |
|
Вернуться к началу |
|
|
Сергей Попов
Зарегистрирован: 05.03.2005 Сообщения: 299 Откуда: г. Тольятти - Самара - Копейск
|
Добавлено: Ср 15 Сен 2010 16:09 Заголовок сообщения: Re: Стиль и метод отображения |
|
|
Я по другому поставлю вопрос:
Что заставляет Вас именно так это делать? Почему стиль не содержит методов отображения?
Я не сталкивался с подобным вероятно по тому, что хоть маломальский метод у любого моего стиля обязательно есть. _________________ г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ" |
|
Вернуться к началу |
|
|
Foton
Зарегистрирован: 09.10.2006 Сообщения: 158 Откуда: Ярославль
|
Добавлено: Ср 15 Сен 2010 17:11 Заголовок сообщения: Re: Стиль и метод отображения |
|
|
Сергей Попов писал(а): |
Что заставляет Вас именно так это делать? |
1. импортировал шейпы, торопился, стили создал, методы добавить забыл.
2. в прошлом делал модуль расширения по разделению слоя на линии, полигоны и точки. в мануле программиста как добавить метод не нашел, добавлял просто новый стиль и в него сливал объекты.
задам тогда вопрос по другому: как программно добавить метод? поправлю тогда старый свой утиль |
|
Вернуться к началу |
|
|
Сергей Попов
Зарегистрирован: 05.03.2005 Сообщения: 299 Откуда: г. Тольятти - Самара - Копейск
|
|
Вернуться к началу |
|
|
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 _________________ г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ" |
|
Вернуться к началу |
|
|
Foton
Зарегистрирован: 09.10.2006 Сообщения: 158 Откуда: Ярославль
|
Добавлено: Пт 17 Сен 2010 11:45 Заголовок сообщения: |
|
|
Сергей Попов писал(а): |
Всё это есть и в IngeoIntfs.chm |
Сергей, это код под актив-икс. мой старый утиль в виде Addon-модуля расширения.
нашел в общем, поправил, вроде работает.
интересно все же, почему не подхватывается стиль? получается у объекта прописывается в базе не только стиль, но еще и метод...следовательно получается метод отображения не только атрибут стиля, но еще атрибут каждого объекта..? |
|
Вернуться к началу |
|
|
Сергей Попов
Зарегистрирован: 05.03.2005 Сообщения: 299 Откуда: г. Тольятти - Самара - Копейск
|
Добавлено: Сб 18 Сен 2010 14:08 Заголовок сообщения: |
|
|
Не буду спорить, помочь хотел как умею.
Коль Вы справились, тогда прошу выложить свой вариант, думаю что пригодится многим.
Предположение: "следовательно получается метод отображения не только атрибут стиля, но еще атрибут каждого объекта..?" считаю не верным.
Была изначальная ошибка - отсутствие метода. Это важная (КАРДИНАЛЬНАЯ) ошибка, хотя может быть ИнГЕО не заострил ваше внимание на ней. Ведь когда Вы явно, ручками пытаетесь удалить единственный метод он Вам сообщает о противоестественности ваших действий.
А уж КАРДИНАЛЬНАЯ ошибка может выстрелить где угодно. Немудрено.
Всё равно что родить ребёнка, но принципиально не получать на него свидетельства о рождении и задавать вопрос: - «Почему с ним не выпускают за границу?». Допустим дошло что нужно свидетельство, пошли за ним в ЗАГС, там тоже не всё просто как у всех, опять вопросы - "Почему вовремя вы этого не сделали? - Где справка из роддома и вот вам квитанция на штраф?" А роддом тоже простой: - "Да рожали, справку Вам выдавали, ищите у себя. Потеряли, выкинули, тогда это не к нам. Может Вам в суд?".
Вывод: последовательность предписанных действий лучше не нарушать.
Задам ещё вопросы для подтверждения или опровержения догадок.
Имеем:
Слой с формами стиля, в котором отсутствуют методы. Они не отображаются. Добавили методы, формы всё равно не отображаются.
Предлагаю:
1. Завершаем работу клиента ИнГЕО, и запускаем по новой. Какой результат? Видно или нет?
2. Если на предыдущем шаге всё-же не видно, тогда пробуем остановить сервер ИнГЕО и запустить по новой. Что изменилось?
Жду результатов ваших экспериментов. Мог бы и сам, да лень. _________________ г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ" |
|
Вернуться к началу |
|
|
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 старого софиста.
Пусть в споре родиться истина или подсказка для разработчиков. _________________ г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ" |
|
Вернуться к началу |
|
|
Foton
Зарегистрирован: 09.10.2006 Сообщения: 158 Откуда: Ярославль
|
Добавлено: Вт 21 Сен 2010 10:50 Заголовок сообщения: |
|
|
Сергей Попов писал(а): | ...или подсказка для разработчиков. |
жаль вот только появляются они здесь раз в пятилетку. что странно, если учесть, что это их прямая финансовая выгода. |
|
Вернуться к началу |
|
|
Сергей Попов
Зарегистрирован: 05.03.2005 Сообщения: 299 Откуда: г. Тольятти - Самара - Копейск
|
Добавлено: Вт 21 Сен 2010 11:56 Заголовок сообщения: |
|
|
Foton писал(а): | жаль вот только появляются они здесь раз в пятилетку. что странно, если учесть, что это их прямая финансовая выгода. |
Да, появляются они тут редко. Да и форум нужен в первую очередь пользователям по принципу: "спасение утопающих - дело рук самих утопающих".
Для связи со службой технической поддержки есть почтовый адрес. Если туда писать, то отзываются достаточно оперативно.
Служба технической поддержки:
Тукаев Рустам Рифатович
Гадеев Руслан Ирикович
email: support@integro.ru
Тел./факс: (347) 232-91-53, 232-12-41, 248-98-12, 237-88-81 _________________ г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ" |
|
Вернуться к началу |
|
|
Михаил Власов
Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
|
Добавлено: Пт 24 Сен 2010 16:07 Заголовок сообщения: |
|
|
Foton писал(а): | жаль вот только появляются они здесь раз в пятилетку. что странно, если учесть, что это их прямая финансовая выгода. |
Форум мы читаем регулярно (по несколько раз на день).
Отвечаем хоть и не всегда, но тоже не редко.
По существу вопроса - при создании объекта его границы расчитываются исходя из методов отображения. Если у стиля методов нет, то у объекта будут нулевые границы. При изменении стиля границы объектов не пересчитываются.
Добавили в список пожеланий расчет границ объекта по контуру для случая, когда у стиля нет методов отображения. _________________ С уважением, Михаил Власов. |
|
Вернуться к началу |
|
|
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 инструмент принудительного пересчёта границ. _________________ г. Тольятти, г. Самара, ОАО "КУЗНЕЦОВ" |
|
Вернуться к началу |
|
|
Михаил Власов
Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
|
Добавлено: Пн 27 Сен 2010 14:14 Заголовок сообщения: |
|
|
Сергей Попов писал(а): | Стало быть подправите расчёт первичный, который осуществляется при создании объекта.
Может ли так произойти, что в результате изменения методов отображения, они перестанут согласовываться с расчётными границами объекта (формы), определяемыми однократно - в момент создания объекта (формы)? |
Рассинхронизация границ может иметь место только в одном случае - при изменении параметров текстового метода отображения (например, при увеличении размеров шрифта). Следствием такого изменения может стать частичное обрезание текста на границе объекта, например при прокрутке карты.
Во всех других случаях (например, при увеличении толщины окантовки стандартного метода), объекты будут отображаться и позиционироваться правильно. _________________ С уважением, Михаил Власов. |
|
Вернуться к началу |
|
|
|