RUS  ENG 

Переименование режима

Страницы: 1
RSS
Переименование режима
 
Добрый вечер.
Delphi XE6, Zulu Версия 8.0.0.7552u и сервер и клиент.

Делаю плагин.
Пытаюсь в плагине переименовать режим, но нет, эта конструкция оставляет как есть, Name не меняется:
Layer.ObjectTypes.Item[nameof].Modes.Item[1].Name := 'Трубопровод';
причем периодически выдает Exception, без всякой системы
При переименовании вручную в клиенте требует сохранения структуры слоя, как это сделать программно - не могу найти.

Спасибо за внимание.
 
Цитата
Vic написал:
Добрый вечер.
Delphi XE6, Zulu Версия 8.0.0.7552u и сервер и клиент.

Делаю плагин.
Пытаюсь в плагине переименовать режим, но нет, эта конструкция оставляет как есть, Name не меняется:
Layer.ObjectTypes.Item[nameof].Modes.Item[1].Name := 'Трубопровод';
причем периодически выдает Exception, без всякой системы
При переименовании вручную в клиенте требует сохранения структуры слоя, как это сделать программно - не могу найти.

Спасибо за внимание.
Проверил на VBSript. Работает.

Если слой локальный, убедитесь, что слой в этот момент никто не редактирует.
Если слой серверный, убедитесь, что есть права на изменение структуры.

Ну и чтобы ловить Exeption, или избегать их, не рекомендуется все писать одной строчкой.

Вдруг, какой-то промежуточный объект не существует.
 
Вот VBSript:

Код
Sub rename_mode()
    Set Out = OpenOutputChannel ("Сообщения")
    Out.Clear
    Out.Put "переименование режима" & chr(10)
    Set l = Zulu.ActiveMapDoc.Layers.Active

    Out.Put "Участок: " & l.ObjectTypes.Item(8).Name & chr(10)
    Out.Put "Статус редактирования: (EditState) " & l.EditState  & chr(10)
    Out.Put "Режим до:    " & l.ObjectTypes.Item(8).Modes.Item(1).Name & chr(10)

    NewName = "Трубопровод"

    Out.Put "Переименовываем режим в " & NewName  & chr(10)
    l.ObjectTypes.Item(8).Modes.Item(1).Name = NewName

    Out.Put "Статус редактирования: (EditState) " & l.EditState  & chr(10)
    Out.Put "Режим после:  " & l.ObjectTypes.Item(8).Modes.Item(1).Name & chr(10)

End Sub

вывод в "Сообщения":

Код
переименование режима
Участок: Участок водопроводной сети
Статус редактирования: (EditState) 1
Режим до:    Включен
Переименовываем режим в Трубопровод
Статус редактирования: (EditState) 1
Режим после:  Включен

что у меня не так?
добавление режимов без проблем. удаление тоже, если режим не занят объектами
Изменено: Vic - 14.09.2020 00:00:39
 
Цитата
Vic написал:
Вот VBSript:

что у меня не так?
добавление режимов без проблем. удаление тоже, если режим не занят объектами
Скачайте обновление. Кое-что поправили. Проверьте, как будет работать.
 
Да, теперь работает

Спасибо
Страницы: 1