AddEnumElement method (Layer)

Добавляет в слой текущий элемент итератора EnumElements другого слоя c присвоением ему заданного ID.

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

Layer

Синтаксис:

Visual Basic:

Function AddEnumElement(Elems As IZEnumElements, ElemID As Long, Flags As Long) As Long

Elems - итератор EnumElements слоя источника.

ElemID - ID добавляемого элемента.

Flags - признак необходимости проверки на существование указанного ElemID ( 0 - не проверять, 1 - проверять),

Описание:

Если значение ElemID равно -1, то записываемому элементу ID присваивается автоматически.

При отсутствии проверки на существование в слое элемента с указанным ElemID метод работает быстрее, но в этом случае разработчик должен сам быть уверен, что повторение ключа исключается (например, последовательная запись в новый слой с увеличением значения очередного ElemID на единицу).

Если такой уверенности нет, то нужно задавать флаг проверки Flags равным 1. Тогда, если ключ с указанным ElemID в слое уже существует, в добавлении нового элемента будет отказано.

Если добавление элемента выполнено успешно, метод возвращает ID добавленного элемента. В противном случае метод возвращает -1.

Пример:

'Создаем новый слой и переписываем в него все объекты другого слоя
Private Sub CopyLayerGraphics( SrcLayer As Layer, DestLayerName As String, DestLayerTitle As String)

    Dim DestLayer As Layer 
    Dim En As IZEnumElements 
    Dim Tools As ZuluTools 
    Set Tools = New ZuluTools  'Создаем новый слой 

    Tools.LayerCreate DestLayerName, DestLayerTitle, eMixedLayer
    'Открываем созданный слой 
    Set DestLayer = New Layer
    DestLayer.Open DestLayerName
    'Получаем итератор для слоя источника
    Set En = SrcLayer.EnumElements

    En.MoveFirst 'Встали на первый элемент
    Do
        If En.IsEOF Then Exit Do 'Если элементы кончились, выходим 
        'Записываем очередной объект в новый слой
        'без проверки на уникальность ключа, т.к. 
        'в качестве ключа берем ключ слоя источника
        'а до начала записи слой для записи объектов не 'содержал
        DestLayer.AddEnumElement En, En.ElemID, 0
        En.MoveNext 'Встаем на следующий элемент

    Loop
End Sub