Bondarets Alexander писал(а):
Лучше сделайте свою функцию которая перебирает весь список слоев, используя функции:
@Map.Layers.Count
@Map.Layers.Get Number
и возвращает номер слоя с заданным ID, или 0, если такой слой не найден.
Sergey Oleynik писал(а):
Но мы можем добавить готовую функцию. Что-то вроде @Map.Layers.IDToIndex, которая вернет номер слоя с указанным кодом (или 0 если такой слой не найден). Ну и аналогичную для параметров.
Варіант перебору можливий тільки у скрипті. До теми наступне.
Я хочу використати канал зв'язку Excel-Digitals, використовуючи ws2_32.dll, але не уявляю собі що таке багатопоточність (надіюсь "розгребу" функцію для прослуховування отриманих від Digitals-а відповідей). Задумано використати скрипти автозапуску:
1. Excel в процедурі автозапуску при внесенні даних посилає
команду в Digitals виконати скрипт записаний для кнопки панелі інструментів, результатом роботи якого (скрипта) буде, наприклад, створення полігону з координатами вказаними в Excel), та закінчує процедуру. Функції запуску скрипта через натискання кнопки панелі інструментів немає, але посилання відповідного віконного повідомлення в дочірнє вікно (кнопку) вікна верхнього рівня (панелі інструментів) ініціювало б натискання цієї кнопки. Тут доступність різного набору кнопок з різними скриптами мала б забезпечитись наявністю відповідного файла *.tlb
2. При виникненні події вказаній в скрипті прикріпленому до активовованої кнопки панелі інструментів Digitals-a, скрипт виконується, а
дані (як результат виконання скрипта) відповідною функцією (якої також немає)
відсилаються на порт TCP/IP (на сокет Excel, який прослуховується). При отриманні відповіді, Excel виконує відповідні розрахунки та відображає результат.
Функція @Map.Layers.IDToIndex, як на мене, згодилася б по-любому при роботі з різними версіями карт і різними шарами чи параметрами, а як що до описаного вище?
Якщо цей хід реальний - треба відповідні функції, якщо це маячня - буду шукати щось інше.