Добавлено: 03 Июнь 2004, 19:23
Уважаемые коллеги!
Ситуация: работает кларионовское приложение (С5 АВС) с Word 2000 через OLE Automation. Word'у выдается команда Copy. При этом в Clipboard попадает только голый текст (без символов форматирования), а они-то и нужны. Во всех остальных версиях Word все попадает в Clipboard полностью. Вопрос: как заставить Word помещать в Clipboard текст вместе с символами форматирования?
Подскажите, плз, решение проблемы!
К.Р.
(Добавление)
Hi.
Проблема не в ворде, а в кларионе. CLIPBOARD() возвращает только стандартный голый текст: CF_TEXT, а вам видимо нужно что-то вроде RTF, которого нет среди стандартных форматов.
Самое правильное - работать с клипбордом через COM иинтерфейс. С5 поддерживеет интерфейсы как undokumented. (Но я не проверял. Если не заработает, то в ClaMag. Там есть статьи Джима Кейна о том, как обращаться к COM интерфейсам через "прокладочку" на асме).
Процедура будет примерно следующая. Ворд при копировании создает в системе объект с интерфейсом IDataObject. У этого объекта нужно выяснить в каких форматах он может отдать данные (enumerate), выбрать подходящий формат и запросить данные в этом формате.
WBR, Nick Tsigouro mailto:nick@arsis.ru
У меня лежит простенький класс http://www.tacis-dipol.ru/fil/ClipClass.zip , который позволяет сохранить все поля Буфера обмена в очередь. И потом выбрать данные нужного типа. А основное назначение - сохранять и восстанавливать всё содержимое Буфера Обмена, если его надо испортить программой. И там же ряд полезных функций, например, RTFToClipboard()
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
(Добавление)
Спасибо.
К.Р.
Видимо в новом веке Ворд перестал 100%-но поддерживать форматы-протоколы Win16. А Notepad - это такой-же 16-битный динозавр (по функционалу), как и Кларион.
PS. Сори, что то у меня предыдущий пост слишком много раз убежал.
WBR, Nick Tsigouro
Спасибо! Обязательно пригодится.
А вопрос снимается: проблему удалось решить через Selection.Start, Selection.End и GetText. Он возвращает ячейку целиком, вместе со всеми символами форматирования.
Спасибо всем откликнувшимся!
К.Р.
Написал: ClaList(2)
Ситуация: работает кларионовское приложение (С5 АВС) с Word 2000 через OLE Automation. Word'у выдается команда Copy. При этом в Clipboard попадает только голый текст (без символов форматирования), а они-то и нужны. Во всех остальных версиях Word все попадает в Clipboard полностью. Вопрос: как заставить Word помещать в Clipboard текст вместе с символами форматирования?
Подскажите, плз, решение проблемы!
К.Р.
(Добавление)
Hi.
Проблема не в ворде, а в кларионе. CLIPBOARD() возвращает только стандартный голый текст: CF_TEXT, а вам видимо нужно что-то вроде RTF, которого нет среди стандартных форматов.
Самое правильное - работать с клипбордом через COM иинтерфейс. С5 поддерживеет интерфейсы как undokumented. (Но я не проверял. Если не заработает, то в ClaMag. Там есть статьи Джима Кейна о том, как обращаться к COM интерфейсам через "прокладочку" на асме).
Процедура будет примерно следующая. Ворд при копировании создает в системе объект с интерфейсом IDataObject. У этого объекта нужно выяснить в каких форматах он может отдать данные (enumerate), выбрать подходящий формат и запросить данные в этом формате.
WBR, Nick Tsigouro mailto:nick@arsis.ru
У меня лежит простенький класс http://www.tacis-dipol.ru/fil/ClipClass.zip , который позволяет сохранить все поля Буфера обмена в очередь. И потом выбрать данные нужного типа. А основное назначение - сохранять и восстанавливать всё содержимое Буфера Обмена, если его надо испортить программой. И там же ряд полезных функций, например, RTFToClipboard()
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
(Добавление)
Не соглашусь: тогда непонятно, почему со ВСЕМИ остальными версиями Office работает нормально. Кроме того, COPY в Word и Paste в Notepad дает тот же самый результат (без Клариона и без форматирования).Проблема не в ворде, а в кларионе. CLIPBOARD() возвращает только стандартный голый текст: CF_TEXT, а вам видимо нужно что-то вроде RTF, которого нет среди стандартных форматов.
Спасибо.
К.Р.
Видимо в новом веке Ворд перестал 100%-но поддерживать форматы-протоколы Win16. А Notepad - это такой-же 16-битный динозавр (по функционалу), как и Кларион.
PS. Сори, что то у меня предыдущий пост слишком много раз убежал.

WBR, Nick Tsigouro
Спасибо! Обязательно пригодится.
А вопрос снимается: проблему удалось решить через Selection.Start, Selection.End и GetText. Он возвращает ячейку целиком, вместе со всеми символами форматирования.
Спасибо всем откликнувшимся!
К.Р.
Написал: ClaList(2)