Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];

Вниз

Как стрим (любой) в клипборд перегнать и выдавить в WORD?   Найти похожие ветки 

 
sanik   (2003-01-08 03:46) [0]

Привет,

Простая, казалось бы задача,

надо прочитать BLOB поле(в нем храню RTF-файл) из таблички, запомнить его в буфер и выдавить в WORD.

хочу делать так:
===================
var
bs: TADOBlobStream;
...........

procedure.....

bs:=TADOBlobStream.Create(MyTableDocument, bmRead);

как этот стрим в Clipboard загнать?
и при этом не потерять форматирование текста

...............................
потом запускаю WORD
try
MsWord := GetActiveOleObject("Word.Application");
except
try
MsWord := CreateOleObject("Word.Application");
MsWord.Visible := True;
except
Exception.Create("Error");
end;
end;
...............................
выдавливается содержимое из Clipboard.

MSWord.Documents.Add;
Rng := MSWord.Selection.Range;
Rng.Paste;

=========
Везде примеры даются с картинками и копированием содержимого компонент на форме в буфер, а мне надо сразу из таблицы в буфер загнать (без размещения на форме) Например открыть в ворде документ, сохраненный в поле BLOB.


Спасибо,
Sandy


 
asmith   (2003-01-08 14:18) [1]

> как этот стрим в Clipboard загнать?
Вот так:
http://www.sources.ru/delphi/system/clipboard_and_tmemorystream.shtml


 
Alex Konshin   (2003-01-08 18:42) [2]

2 asmith: Ну и что же там потом Word приклеит, если ты предлагаешь скопировать в клипбоард в СВОЕМ формате?

2 sanik: Я вчера ответил на какой-то подобный вопрос, точнее, я там привел текст процедуры, которая String записывает в clipboard в таком виде, что ее потом нормально понимает Excel.
Если же делать в лоб, то могут быть/будут проблемы с русскими буквами.
Но я понятия не имею, как это будет работать с тексом в rtf, вполне возможно, что нужно класть в clipboard в каком-то другом предопределенном формате.
Пусть лучше уж ответят те, кто с этим уже сталкивался.
Наверно можно пойти по другому пути, который наверно даже более правильный, но и более сложный. Наверно можно реализовать свой моникер или стрим и как-то заставить ворд читать из него. Тогда и clipboard портиться не будет.
Есть еще и очень тупой и простой путь: записать во временный файл *.rtf и открыть его.


 
sanik   (2003-01-08 21:36) [3]

2 asmith

Спасибо, открыл пример, но не могу понять целиком всю последовательность.


>Обычно, это нужно для того, чтобы запихнуть в буфер обмена >данные собственного формата. Сначала необходимо >зарегистрировать этот формат при помощи функции >RegisterClipboardFormat():

> CF_MYFORMAT := RegisterClipboardFormat("My Format Description");


Где в программе этот кусок про CF_MYFORMAT надо прописать?




 
sanik   (2003-01-08 22:14) [4]

2 asmith

В моем примере я считываю содержимое поля из TADOStoredProc
bs:=TADOBlobStream.Create(MyTableDocument, bmRead);

но ума не приложу куда в Вашем коде этот кусок вставить, там же TMemoryStream....

Я уже неделю убиваю - несовместимы эти чертовы стримы!!!!!!
а в этом чертовом DBRichEdit rtf документ показывается коряво
он теряет табличку - вместо нее бред на фоне сетки.
С этим я смирился, просто хочу гнать содержимое BLOB-поля в WORD и там наслаждаться форматированным видом. Но накак не могу прочесть TAdoblob-поле в буфер без потери форматирования и выдавить его в WORDе.

>Есть еще и очень тупой и простой путь: записать во временный файл *.rtf и открыть его.

Это я сделал - работает, но в этом случае повязан на диск с.



========================================
Короче, я сделал так для теста

- форма
- на ней
ADOConnection; - соединяюсь с SQL SERVER 2000
ADOStoredProc; - извлекаю в dataset простую табличку
со структурой фамилия=резюме

DBGrid; - показываю список фамилий

DBRichEdit (туды его в качелю!) (который криво показывает содержимое Image-поля - а в этом поле храню rtf-документы с табличками); - в этом компоненте хочу видеть отформатированное содержимое

Button; - вызывающий запуск WORD и подразумевающий действия
по копированию TADOBlobStream
(bs:=TADOBlobStream.Create(MyTableDocument, bmRead))
в буфер с последущим выдавливанием
ф о р м а т и р о в а н н о г о (RTF) содержимого
этого буфера в тело документа вордовского.
=====================
Можно последовательно показать куда все вставить?
(P.S.Молчать, господа офицеры!)

Спасибо,
Александр.





 
Alex Konshin   (2003-01-08 22:46) [5]

Я же тебе черным по серому написал, что тебе глупость советуют.
Откуда MSWord узнает, как доставать данные из clipboard, когда их туда записали в собстевенном формате? Даже если они и на самом деле текстовые. Нужно писать в формате, который он понимает. Можно ожидать, что он поймет какой-нибудь стандартный предопределенный формат:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/clipboard/clipboardformats.asp
Наверняка он поймет CF_HTML формат, пожалуй, это найболее близко к твоим потребностям. Кстати, почему бы тебе не писать в базу HTML вместо RTF?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/clipboard/htmlclipboardformat.asp



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.01 c
3-62364
oss
2002-12-19 18:14
2003.01.20
ADO


14-62820
ДедушкаКо
2003-01-02 10:32
2003.01.20
Таблетки посоветуйте. Ну как у Руматы, но с вариантами.


1-62553
Керик
2002-12-31 07:59
2003.01.20
Сохранение и загрузка файлов


3-62435
Senator
2002-12-26 17:01
2003.01.20
восстановление связи с СУБД


1-62568
+++Ulf+++
2003-01-11 10:03
2003.01.20
Функция поиска и удаления слов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский