• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Обновление Rtf Поля

  • Автор темы Antigo
  • Дата начала
A

Antigo

Всем привет!
Вот такой вопрос. Документ открыт и находится в режиме редактирования, в документе есть rtf поле. мне нужно программно записать ссылку на другой документ в это поле и чтобы она сразу отобразилась в документе.
Возможно ли как-то это сделать без программного переоткрывания документа?
Спасибо!
 

savl

Lotus Team
28.10.2011
2 607
313
BIT
258
Нет, без переоткрытия нельзя.

Если ссылка всегда одна, то можно заменить вставку ссылки на аналогичный механизм:
1. Прописываем сервер, путь/реплику базы в допполя
2. Прописываем UNID документа в дополе
3. Делаем Надпись с Action HotSpot, в надписи можно писать тему полученного документа.
4. Внутри HotSpot код, который получает базу по полям, затем в этой базе получает документ.
5. Открываем документ
6. ???????
7. PROFIT

Если ссылок несколько - можно сделать ссылочную систему, это более серьезная работа.
 
A

alexas

Вообще-то можно:
Если совсем без переоткрытия, то надо работать строго в UI: использовать Copy - Paste в RTF. К примеру - так:
1. Создаём NotesDocument - TempDoc, с полем NotesRichTextItem - RtitemTemp.
2. В RtitemTemp помещаем ссылку.
3. Показываем TempDoc в UI.
4. Помещаем курсор в RtitemTemp и делаем SelectAll,Copy
5. Закрываем TempDoc без сохранения.
6. Помещаем курсор в нужное поле в нужное место целевого дока и делаем Paste
Но вкладка "моргнёт", конечно.
А Вам это точно нужно?
Программное переоткрытие работает хорошо
 
A

Antigo

Спасибо за советы. Попробывал как предложил alexas. Но, иногда проскакивает ошибка в Paste. Типа не удется найти поле, не могу понять от чего она появляется
 
A

Antigo

Antigo
Режим чтения может?
нет, вроде нашел в чем дело. нужно было добавить параметр true в TempDocUI.Close(True). временный докумнет, в который я записывал ссылку в ртф поле закрывался не сразу, поэтому когда я делал Call uidoc.Paste выпадала ошибка, что не удается найти поле.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!