Попытка назначить локальный слой редактируемым.
Visual Basic:
Function StartEdit() As Long
Этот метод «захватывает» слой для редактирования, если его не редактирует другой пользователь. Если слой уже кто-то редактирует, метод вернет 0. В случае успеха метод вернет число больше единицы.
Возвращается счетчик захватов: первый удачный вызов дает 1, второй - 2, третий - 3. Свойство EditState при этом равно 1, а после полного освобождения слоя - нулю.
Захват виден другим: второй объект Layer, открывший тот же файл, получает от StartEdit ноль, пока первый не отпустит слой столько раз, сколько захватывал.
По завершении редактирования следует вызвать метод StopEdit.
Данный метод не оказывает действия на серверный слой.
В случае неудачи возникает исключение с одним из следующих кодов:
Код
Описание
513
Слой не открыт. Операция проводится со слоем, который либо не загружен в карту, либо не открыт с помощью метода Open.
Пример захватывает слой трижды, показывает, что второй объект его в это время не получает, и отпускает столько же раз.
Visual Basic:
Sub Layer_StartEdit 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active 'Второй объект открывает тот же файл слоя Set L2 = CreateObject("ZuluLib.Layer") L2.Open L.Name 'Захватываем слой три раза подряд S = "StartEdit: " & L.StartEdit & ", " & L.StartEdit & ", " & L.StartEdit S = S & vbCrLf & "второму объекту достается: " & L2.StartEdit 'Отпускаем столько же раз S = S & vbCrLf & "StopEdit: " & L.StopEdit & ", " & L.StopEdit & ", " & L.StopEdit S = S & vbCrLf & "теперь второму объекту: " & L2.StartEdit L2.StopEdit MsgBox S End SubPython:
import zulu def Macro_Layer_StartEdit(): # Берем активный слой карты L = zulu.App.ActiveMapDoc.Layers.Active # Второй объект открывает тот же файл слоя l2 = zulu.Layer() l2.Open(L.Name) # Захватываем слой три раза подряд print("StartEdit:", L.StartEdit(), ",", L.StartEdit(), ",", L.StartEdit()) print("второму объекту достается:", l2.StartEdit()) # Отпускаем столько же раз print("StopEdit:", L.StopEdit(), ",", L.StopEdit(), ",", L.StopEdit()) print("теперь второму объекту:", l2.StartEdit()) l2.StopEdit()