RTF через clipboard

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
dik1970
Посетитель
Сообщения: 43
Зарегистрирован: 06 Август 2009, 23:39

RTF через clipboard

Сообщение dik1970 »

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

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

 
   setclipboard(bam:tech)
   WObject{'Application.Selection.Find.Execute("'&clip('[Tech]')&'", , , , , , 1, 1, ,)'}
   WObject{'Application.Selection.Paste("'&clip(clipboard())&'")'}
   
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

RTF через clipboard

Сообщение kreator »

Макрос Word создаёт такой:

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

Selection.PasteAndFormat (wdPasteDefault)
Ещё посмотрите вот это - "WdPasteDataType Enumeration". И вот это - "wdPasteRTF".
We are hard at work… for you. :)
dik1970
Посетитель
Сообщения: 43
Зарегистрирован: 06 Август 2009, 23:39

RTF через clipboard

Сообщение dik1970 »

Спасибо, направление понятно. Но MS почему-то пишет, что PasteAndFormat использует не WdPasteDataType, а WdRecoveryType, из которых wdPasteDefault не поддерживается, а c wdPasteRTF возвращает такой же текст : {\rtf1\ansi\ansicpg1251\deff0......} что и просто paste.
А если в исходном примере вместо setclipboard(), предварительно поместить на clipboard тот же rtf через ctrl-c, то он вставляется как надо.
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

RTF через clipboard

Сообщение gopstop2007 »

Попробуйте, может нужно исходное поле формата - text
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

RTF через clipboard

Сообщение kreator »

dik1970 писал(а): 14 Апрель 2021, 6:00 Но MS почему-то пишет, что PasteAndFormat использует не WdPasteDataType, а WdRecoveryType, из которых wdPasteDefault не поддерживается
Может и пишет. Но я попробовал, макрос создался вот такой. Что будет, если попробовать как я написал. А версия Office какая? Может это тоже влияет?
We are hard at work… for you. :)
dik1970
Посетитель
Сообщения: 43
Зарегистрирован: 06 Август 2009, 23:39

RTF через clipboard

Сообщение dik1970 »

gopstop2007 писал(а): 14 Апрель 2021, 8:13 Попробуйте, может нужно исходное поле формата - text
Если имеется ввиду формат оконного поля, то окна то нет.
kreator писал(а): 14 Апрель 2021, 9:43 Может и пишет. Но я попробовал, макрос создался вот такой. Что будет, если попробовать как я написал. А версия Office какая? Может это тоже влияет?
Попробовал с wdPasteDefault, результат тот же. Офис пробовал 2007 sp2 и 2010
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

RTF через clipboard

Сообщение gopstop2007 »

dik1970 писал(а): 14 Апрель 2021, 11:32
gopstop2007 писал(а): 14 Апрель 2021, 8:13 Попробуйте, может нужно исходное поле формата - text
Если имеется ввиду формат оконного поля, то окна то нет.
Я имел ввиду, что данные при сохранении в memo - меняют свой формат, после чего и выводятся неверно в RTF. Добавьте/уберите атрибут BINARY в MEMO, возможно эксперимент с переменной как я писал выше - сохранить RTF в переменную формат - TEXT и потом вывести в ворд
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

RTF через clipboard

Сообщение kreator »

Дело скорее вот в чём. Кларион, к сожалению, посылает в клипборд обычный текст. Соответственно ВинВорд не понимает, что надо иметь дело с rtf. Что можно попробовать? Перед помещением текста rtf в виндовый буфер перевести сам буфер в режим rtf. https://docs.microsoft.com/en-us/window ... ardformata. Ну и есть параметр СF_RTF для неё и ещё несколько связанных.
We are hard at work… for you. :)
Ответить