Как удалить гиперссылку для выбранного элемента

Автор Борис_С, 15.06.21, 15:39:44

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Борис_С

Всем доброго дня.
Нужно удалить гиперссылку для выбранного элемента. Написал такой код:
    ksDocument2D doc = kompas.ActiveDocument2D();
    //kompas - ссылка на экземпляр Application приложения Kompas   
    doc.ksClearGroup(0, false); //снятие выделения текста
    doc.ksAddObjGroup(0, reference); //выделение текста
    //reference - идентификатор объекта
    IApplication kompasApi7 = (IApplication)kompas.ksGetApplication7();
    IKompasDocument doc1 = kompasApi7.ActiveDocument;
    ISelectionManager selectionManager = doc1.SelectionManager;
    IDrawingObject selectObject = selectionManager.SelectedObjects;
    bool bDelete = kompasDocument2D1.DeleteHyperLinks(selectObject);
Код не удаляет гиперссылку, bDelete = false. Где я не прав?
Спасибо.

В этой теме, Вы получили ссылку, а что мешает ее удалить.
IdrawingObject1.DeleteHyperLink - Удалить гиперссылку.

KilkennyCat

Цитата: Борис_С от 15.06.21, 15:39:44Где я не прав?
Вы пытаетесь удалить множественное у единственного или единственное у множественного.
Например,  IDrawingObject selectObject = selectionManager.SelectedObjects;
SelectedObjects - это может быть не один объект, а массив объектов.
Справка:
"Свойство позволяет получать массив выделенных объектов. Если возвращается один
объект, то тип VARIANT"а будет VT_DISPATCH, если возвращается несколько объектов,
то тип VARIANT"а будет VT_ARRAY | VT_DISPATCH."
Но Ваш код не проверяет этого и смело берется выполнить операцию над массивом, которого, возможно, и нет вовсе.
Справка не особо раскрывает механизм всей кухни, поэтому, возможно такое и прокатит (тем более, что передаются указатели), но я бы не надеялся.

Борис_С

Цитата: Sabahs от 15.06.21, 15:53:35В этой теме, Вы получили ссылку, а что мешает ее удалить.
IdrawingObject1.DeleteHyperLink - Удалить гиперссылку.
Спасибо. Все получилось.