Страница 1 из 1

RTF через clipboard

Добавлено: 13 Апрель 2021, 14:34
dik1970
В memo сохранен rtf-текст. Можно ли его загрузить в clipboard, чтобы потом вставить в doc. Для обычного текста работает:

Код: Выделить всё

 
   setclipboard(bam:tech)
   WObject{'Application.Selection.Find.Execute("'&clip('[Tech]')&'", , , , , , 1, 1, ,)'}
   WObject{'Application.Selection.Paste("'&clip(clipboard())&'")'}
   

RTF через clipboard

Добавлено: 13 Апрель 2021, 23:12
kreator
Макрос Word создаёт такой:

Код: Выделить всё

Selection.PasteAndFormat (wdPasteDefault)
Ещё посмотрите вот это - "WdPasteDataType Enumeration". И вот это - "wdPasteRTF".

RTF через clipboard

Добавлено: 14 Апрель 2021, 6:00
dik1970
Спасибо, направление понятно. Но MS почему-то пишет, что PasteAndFormat использует не WdPasteDataType, а WdRecoveryType, из которых wdPasteDefault не поддерживается, а c wdPasteRTF возвращает такой же текст : {\rtf1\ansi\ansicpg1251\deff0......} что и просто paste.
А если в исходном примере вместо setclipboard(), предварительно поместить на clipboard тот же rtf через ctrl-c, то он вставляется как надо.

RTF через clipboard

Добавлено: 14 Апрель 2021, 8:13
gopstop2007
Попробуйте, может нужно исходное поле формата - text

RTF через clipboard

Добавлено: 14 Апрель 2021, 9:43
kreator
dik1970 писал(а): 14 Апрель 2021, 6:00 Но MS почему-то пишет, что PasteAndFormat использует не WdPasteDataType, а WdRecoveryType, из которых wdPasteDefault не поддерживается
Может и пишет. Но я попробовал, макрос создался вот такой. Что будет, если попробовать как я написал. А версия Office какая? Может это тоже влияет?

RTF через clipboard

Добавлено: 14 Апрель 2021, 11:32
dik1970
gopstop2007 писал(а): 14 Апрель 2021, 8:13 Попробуйте, может нужно исходное поле формата - text
Если имеется ввиду формат оконного поля, то окна то нет.
kreator писал(а): 14 Апрель 2021, 9:43 Может и пишет. Но я попробовал, макрос создался вот такой. Что будет, если попробовать как я написал. А версия Office какая? Может это тоже влияет?
Попробовал с wdPasteDefault, результат тот же. Офис пробовал 2007 sp2 и 2010

RTF через clipboard

Добавлено: 14 Апрель 2021, 15:10
gopstop2007
dik1970 писал(а): 14 Апрель 2021, 11:32
gopstop2007 писал(а): 14 Апрель 2021, 8:13 Попробуйте, может нужно исходное поле формата - text
Если имеется ввиду формат оконного поля, то окна то нет.
Я имел ввиду, что данные при сохранении в memo - меняют свой формат, после чего и выводятся неверно в RTF. Добавьте/уберите атрибут BINARY в MEMO, возможно эксперимент с переменной как я писал выше - сохранить RTF в переменную формат - TEXT и потом вывести в ворд

RTF через clipboard

Добавлено: 14 Апрель 2021, 16:28
kreator
Дело скорее вот в чём. Кларион, к сожалению, посылает в клипборд обычный текст. Соответственно ВинВорд не понимает, что надо иметь дело с rtf. Что можно попробовать? Перед помещением текста rtf в виндовый буфер перевести сам буфер в режим rtf. https://docs.microsoft.com/en-us/window ... ardformata. Ну и есть параметр СF_RTF для неё и ещё несколько связанных.