RUS  ENG 

Exception в ZuluLib.dll при создании буферных зон

Страницы: 1
RSS
Exception в ZuluLib.dll при создании буферных зон
 
Среда разработки - Delphi 6. Версия Zulu - самая последняя на данный момент [2350].
При создании буферной зоны возникает Exception ("нарушение доступа по адресу..." и т.д.). Этот режим программы давно не использовался, но точно, что раньше (около полугода назад) все работало без проблем.
Построение выполняется следующей командой:
MapCtrl.Map.Layers.EditLayer.AddBufferZone(MapCtrl.Map.Layers.EditLayer, tmpEStyle, 200, '', '', 0, false)
Перед этим слой переводится в режим редактирования (EditLayer <> nil), выбирается элемент(ы) в слое, для которого должна быть построена зона, стиль элемента создается тоже правильно и без ошибок.
Может проблемы с последними двумя параметрами в методе?
И еще уж заодно. А как узнать sys только что созданной буферной зоны? Метод возвращает лишь true/false.
 
Ошибка там с вылетом образовалась. Исправил. В ближайшем обновлении будет нормально.

По поводу Sys образовавшейся зоны: в ответ он не пишется т.к. зоны строятся в общем случае для объектов, входящих в Selection. Поэтому новых объектов может образоваться несколько.
Узнать Sys образовавшихся объектов можно обрабатывая событие MapCtrl ElementsChanged

Private Sub MapCtrl1_ElementsChanged(ByVal Elems As ZuluLib.IChangedElementKeys, ByVal LayerIndex As Long, ByVal Action As ZuluLib.eEditorAction, ContinueFlag As ZuluLib.eUserReaction)

For i = 1 To Elems.Count
' Что-то делаем с полученными Sys-ами Elems.Item(i)
Next i

End Sub
 
Спасибо. Будем ждать.
По поводу sys буферных зон. Простите, что не уточнил. В примере кода используется MapCtrl, но это частный случай, лишь для примера. В общем случае, если надо редактировать слой, я создаю ILayer и работаю с ним, так что событие обрабатывать не могу. Как тогда? Запоминать макс. код элемента до редактирования, и все, что больше - буферные зоны? Как то это коряво...
 
Тогда скорее всего придется добавить для Layer свойство, возвращающее IChangedElementKeys. И его проверять после функций редактирования.
 
Добавили свойство Layer.ChangedElements
Страницы: 1