Я пробовала с номером карты - после закрытия 4-5 карт - вылетает ошибка Application violation - что-то типа такого. Короче не работало - поэтому сделала так - так работает. Проверяла на многих картах (20-30)
Спасибо за информацию. В CloseMap действительно возникала ошибка при попытке закрыть несуществующую карту - исправлена. Мой вариант был не очень корректным, так как не учитывал, что количество карт с каждым закрытием уменьшается. А значит, дойдя до середины списка цикл начинает закрывать карты с несуществующими номерами.
Правильно так (закрытие в обратном порядке):
$MC=@MapCount @if $mc=0 then @break нет открытых карт
$I=$MC
%Start @CloseMap $I
$I=$I-1 @if $I>0 @Goto %Start
Не можу розібратись з текстовими змінними. Потрібно відкрити файл, назва якого створюється із значення параметру вибраного обєкту:
$Name=@Map.Filename
$Pass=@GetFilePath $Name $А=$Pass+ID40042+‘.dmf’ @FileOpen $А
Але в змінній $А знаходиться не імя файлу, а стрічка типу шлях_до_файлу+1234+‘.dmf’.
Що не так?
Можно ли сделать так - чтобы при создании кнопки на панели или при редактировании (при записи (при закрытии) ) - в начале скрипта добавлялись 2 коментария - первый - дата создания скрипта, а второй - дата последнего редактирования. Это помогает очень. Если взять любой ГИС продукт - там есть такая опция - не зря ведь
И ещё - приходится закрывать панель и потом её открывать - чтобы сохранились изменения в кнопки - а если произошло аварийное закрытие программы - то вся панелька накрывается медным тазом - бывает что потом открывает такую длиннющую панель - хотя это была всег лишь одна кнопка - каким-то образом Диджиталс её разбрасывает по разным кнопкам.
Дата последнего изменения TLB-файла теперь показывается в строке статуса при входе в редактирование скрипта.
Исправлено. Теперь TLB-файл сохраняется после каждого редактирования скрипта, а не при закрытии Digitals как раньше. При сохранении также создается файл *.tlb.bak с предыдущим вариантом.
Відмітив декілька обєктів - запустив скрипт, але змінюється тільки один обєкт.
Не можу зрозуміти як переключити фокус на наступний вибраний обєкт.
Пробував функцію @Map.NextSelected, але у неї напевно інше призначення.
А что значит “переключить фокус”?
Если вашему скрипту нужно выполнить какое-либо действие со всеми помеченными объектами, то @Map.NextSelected повзоляет в цикле перебрать их все.
Примерно вот так:
$S=0
%Start
$S=@Map.NextSelected $S @If $S=0 then @Break
;
; здесь делаем то, что нам нужно, с объектом под номером $S
; @Goto %Start
Так. Потрібно обробити всі позначені обєкти.
$S=0
%LABEL1
$S=@Map.NextSelected $S @Dialog.Message $S
.
.
. @If $S<$Sel_Count @GOTO %LABEL1
Щось не зовсім працює. Використавши @Dialog.Message побачив, що в перший раз значення $S=1 і скрипт виконується, а в другий раз воно=0, (хоча повинно бути =2), і звісно що скрипт перестає виконуватись.
В вашем скрипте непонятно, где присвоена переменная $Sel_Count.
Далее, сравнивать номер объекта с количеством помеченных объектов это неправильно. Между ними никакой связи. Помеченных может быть два объекта, а номера их могут быть, например, 100000 и 100001. Ведь NextSelected возвращает номер объекта карты (в пределах от 1 дo Map.Count), а не номер объекта в списке помеченных.
Используйте тот скрипт, что я привел - он гарантировано рабочий.
Зачем изобретать более сложный вариант?
Скрипт відкриває нову карту, а потрібно щоб функція @Map[номер].Object[$S].Parameter[ID40042] обробляла обєкти з попередньо відкритої карти.
І ще, що поверне команда $S=@Map.NextSelected, тобто без параметру LastNumber?
Map.NextSelected - вернёт тоже что и Map.NextSelected 0, а именно порядковый номер первого из выделенных объектов (в таких случах можно просто проверить что будет).
Возможно ли создание подписей не одного а нескольких параметров объекта (@Map.Selected.CreateCaptions ParamIndex Orientation Position VAlign HAlign ShiftX ShiftY)?
А можно ли среди функций добавить функцию определения текущего системного времени и даты - иногда нужно сохранять файлы с текущей датой или временем в имени файла.