StartEdit method (Layer)

Попытка назначить локальный слой редактируемым.

Применяется к:

Layer

Синтаксис:

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 Sub

Python:

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()