Открывает диалог со списком слоев карты с дополнительными настройками и возвращает слой, выбранный в нем.
Visual Basic:
Function DoSelectLayerEx(Title As String, Options As Long) As Layer
Title - заголовок диалога. Если строка пустая, заголовок по умолчанию: «Загруженные слои(N) - название карты (имя файла карты)», где N - число слоев карты.
Options - настройки диалога в виде битовых флагов:
1 - не выводить флажок «Показывать имена файлов»,
2 - не выводить в список растровые слои.
Метод работает так же, как DoSelectLayer: после «OK» возвращает выбранный слой, после «Отмена» - Nothing (в python - None). С Options = 0 диалог такой же, как у DoSelectLayer.
Флаг 1 убирает флажок «Показывать имена файлов» внизу окна. Флаг 2 список не меняет: растровые слои (файлы .zrs) и слой рельефа остаются в нем при любом значении Options.
Пример открывает диалог без флажка «Показывать имена файлов» и делает выбранный слой активным.
Visual Basic:
Sub MapDoc_DoSelectLayerEx 'Берем рабочую карту Set Doc = Zulu.ActiveMapDoc 'Диалог выбора слоя, флаг 1 - без флажка «Показывать имена файлов» Set L = Doc.DoSelectLayerEx("Какой слой сделать активным?", 1) If L Is Nothing Then MsgBox "Выбор отменен" Else 'Active присваивается без Set: с Set - ошибка 438 Doc.Layers.Active = L MsgBox "Активный слой: " & Doc.Layers.Active.UserName End If End SubPython:
import zulu def Macro_MapDoc_DoSelectLayerEx(): # Берем рабочую карту doc = zulu.App.ActiveMapDoc # Диалог выбора слоя, флаг 1 - без флажка «Показывать имена файлов» L = doc.DoSelectLayerEx("Какой слой сделать активным?", 1) if L is None: print("Выбор отменен") else: doc.Layers.Active = L print("Активный слой:", doc.Layers.Active.UserName)