Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.23;
Скачать: CL | DM;

Вниз

Как в Clipboard вставить не только сам текст , но и его форматиро   Найти похожие ветки 

 
GreySerg   (2003-12-09 15:16) [0]

Как в Clipboard вставить не только сам текст , но и его форматирование (шрифт , цвет символа и т.д.)?
в своей компоненте делаю :

Clipboard.AsText := Buffer;

в Word после копирования вставляет только текст , без его форматирования


 
REA   (2003-12-09 15:23) [1]

В виде RTF например


 
GreySerg   (2003-12-09 15:27) [2]

то есть в виде RTF ? пример плиз


 
Anatoly Podgoretsky   (2003-12-09 15:32) [3]

RegisterClipboardFormat


 
me   (2003-12-09 15:36) [4]

procedure RTF2Clipboard(rtf : string);
var
sstream : TStringStream;
hbuf : THandle;
bufptr : Pointer;
mstream : TMemoryStream;
CF_MYFORMAT : Word;
begin
CF_MYFORMAT := RegisterClipboardFormat("Rich Text Format");
sstream := TStringStream.Create(rtf);
mstream := TMemoryStream.Create;
mstream.LoadFromStream(sstream);
try
hbuf := GlobalAlloc(GMEM_MOVEABLE, mstream.size);
try
bufptr := GlobalLock(hbuf);
try
Move(mstream.Memory^, bufptr^, mstream.size);
Clipboard.SetAsHandle(CF_MYFORMAT, hbuf);
finally
GlobalUnlock(hbuf);
end;
except
GlobalFree(hbuf);
raise;
end;
finally
mstream.Free();
sstream.Free();
end;
end;


 
GreySerg   (2003-12-09 15:47) [5]

А если я использую не RTF , а свой формат ?


 
GreySerg   (2003-12-09 18:47) [6]

а как это делает Internet Explorer ? преобразует в RTF ?


 
me   (2003-12-09 18:57) [7]

IE использует скорее всего html


 
Anatoly Podgoretsky   (2003-12-09 19:05) [8]

GreySerg (09.12.03 15:47) [5]
RegisterClipboardFormat


 
GreySerg   (2003-12-09 19:17) [9]

> Anatoly Podgoretsky ©
и что будет , если я свой формат придумаю ?
мне надо , чтобы мой форматируемый текст также как в моём компоненте отображался в MS Word (с сохранением форматирования)
я не думаю, что мой формат корректно отобразится в Worde


 
GreySerg   (2003-12-09 19:22) [10]

> me
и как он использует html ?
в RTF формате каждый символ тащит за собой форматирование ,получается последовательность символов с форматированием, которые запихиваются в поток для передачи в clipboard
а как происходит копирование в Clipboard, используя html?


 
GreySerg   (2003-12-09 19:31) [11]

Такой код :
for I := 0 to Clipboard.FormatCount-1 do
ListBox1.Items.Add(IntToStr(Clipboard.Formats[I]));

выдаёт при обычном копировании:
7 1 13 6

при копировании из TRichEdit (с форматированием) к этим числам (они кстати не в таком порядке)добавляются ещё разные :
49161 49301 49530 49529 49171

Может в этом направлении копать ?
то есть как-нить в clipboard засунуть нужные Clipboard.Formats ?


 
GreySerg   (2003-12-10 13:04) [12]

Так как Internet Explorer копирует в Clipboard ?
в RTF формате ?


 
Smithson   (2003-12-10 13:59) [13]

Сосбвенно, в чем вопрос-то? Напиши простенькую прогу, которая по нажатию книпки будет тебе показывать формат данных в клипбоарде и содержимое кармана asString. Скопируй туда что-либо Explorer`ом и смотри...


 
GreySerg   (2003-12-10 14:20) [14]

написал
выводит в проге в текстовом режиме без форматирования
а в Word копируется с форматированием
видимо Internet Explorer создаёт OleDataObject , а Word и другие проги его анализируют и вставляют по разному , или не так ?


 
GreySerg   (2003-12-10 14:26) [15]

в специальной вставке в Worde 4 формата показывает:
formatted Text (RTF)
unformatted text
HTML format
Unformatted Unicode text

Как мне запихнуть такой OleDataObject в Clipboard?


 
Erik   (2003-12-10 15:07) [16]

Слушай дорогой чего шумиш? Хочеш, сделай как тебе люди подсказывают. Не хочеш трамвай, иди пешком. Тебе несколько раз говорили про RegisterClipboardFormat. Сделай сколько мебе нужно форматов и все засунь в Clipboard.


 
GreySerg   (2003-12-10 15:28) [17]

я так и сделал ,

мне нужен только 1 формат - HTML format

я делаю:


procedure HTML2Clipboard(html : string);
var
sstream : TStringStream;
hbuf : THandle;
bufptr : Pointer;
mstream : TMemoryStream;
CF_MYFORMAT : Word;
begin
CF_MYFORMAT := RegisterClipboardFormat("HTML Format");
sstream := TStringStream.Create(html);
mstream := TMemoryStream.Create;
mstream.LoadFromStream(sstream);
try
hbuf := GlobalAlloc(GMEM_MOVEABLE, mstream.size);
try
bufptr := GlobalLock(hbuf);
try
Move(mstream.Memory^, bufptr^, mstream.size);
Clipboard.SetAsHandle(CF_MYFORMAT, hbuf);
finally
GlobalUnlock(hbuf);
end;
except
GlobalFree(hbuf);
raise;
end;
finally
mstream.Free();
sstream.Free();
end;
end;

AssignFile(F, "c:\temp\2.html");
Reset(F);
while not Eof(F) do
begin
Readln(F, S);
S1 := S1 + S;
end;
CloseFile(F);
HTML2Clipboard(S1)



В итоге в Word и в другие текстовые редакторы ничего не вставляется на Paste (в отличии от копированяия из IE)

Может вставлять в Clipboard надо не html текст , а как-то по другому ?


 
GreySerg   (2003-12-10 18:56) [18]

ну всё , нашёл формат HTML Format, работает
как теперь добавить несколько форматов в clipboard , пример плиз


 
GreySerg   (2003-12-10 18:56) [19]

ну всё , нашёл формат HTML Format, работает
как теперь добавить несколько форматов в clipboard , пример плиз


 
GreySerg   (2003-12-11 15:27) [20]

так что ?
никто не знает , как несколько форматов вставить в clipboard ?



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

Текущий архив: 2003.12.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
3-75111
tchn
2003-11-28 14:39
2003.12.23
SQLDirect, MSSQL, (10029)Maximum number of DBPROCESSes already al


8-75270
K-Sergey
2003-08-15 10:55
2003.12.23
Как получить картинку с WebCam


1-75173
Daka
2003-12-11 19:25
2003.12.23
MS Word and MS Excel who i can create a document !


14-75345
Шишкин Илья
2003-11-30 15:24
2003.12.23
TMEMO и др.


1-75262
WondeRu
2003-12-09 10:34
2003.12.23
String to float: запятая или точка?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский