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

Вниз

TKOLRichEdit & RE_InsertRTF   Найти похожие ветки 

 
Andrey_rus ©   (2007-08-25 17:55) [0]

Вставка предварительно отформатированного текста посредством функции RE_InsertRTF добавляет 1кб кода и это не удивительно судя по реализации. Есть ли более кодоэкономичный способ?


 
ANTPro ©   (2007-08-26 17:41) [1]

Вставлять текст из Clipboard.


 
Andrey_rus ©   (2007-08-27 18:29) [2]


> Вставлять текст из Clipboard.


Извращение какое-то :)
Можно пример?


 
ANTPro ©   (2007-08-27 22:18) [3]

В MSDN я другого варианта не увидел :)


//Кстати вот эта функция была бы не лишней в KOL
function Data2Clipboard(ClipboardFormat: Cardinal; DataSrc: Pointer; Size: Cardinal): Boolean;
var
 gbl: THandle;
 DataDest: Pointer;
begin
 Result := False;
 if not OpenClipboard(0) then Exit;
 EmptyClipboard;
 gbl := GlobalAlloc(GMEM_DDESHARE, Size + 1);
 if gbl <> 0 then
 begin
   DataDest := GlobalLock(gbl);
   Move(DataSrc^, DataDest^, Size + 1);
   GlobalUnlock(gbl);
   Result := SetClipboardData(ClipboardFormat, gbl) <> 0;
 end;
 CloseClipboard;
end;

const
 EM_CANPASTE = WM_USER + 50;
 sRTF = "Rich Text Format";

//Новая фича :)
procedure RE_InsertRTFFromClipboard(RichEditHandle: THandle; const S: KOLString);
var
 CF_RTF: THandle;
begin
 CF_RTF := RegisterClipboardFormat(sRTF);
 if Data2Clipboard(CF_RTF, @S[1], Length(S)) then
   SendMessage(RichEditHandle, EM_PASTESPECIAL, CF_RTF, 0);
end;


 
Andrey_rus ©   (2007-08-27 22:48) [4]

Необходимо убедиться, что этот способ действительно даст меньше кода&данных. Надо будет посмотеть реализацию:

1. OpenClipboard
2. EmptyClipboard
3. SetClipboardData
4. CloseClipboard


 
ANTPro ©   (2007-08-27 22:49) [5]

> [4] Andrey_rus ©   (27.08.07 22:48)
> Надо будет посмотеть реализацию

У тебя сорцы Windows есть? :)


 
ANTPro ©   (2007-08-27 22:56) [6]


ВСЕГО : 2AE0 10976 232//Ничего
ВСЕГО : 2BE8 11240 243//RE_InsertRTFFromClipboard(Если заюзать PChar будет еще меньше)
ВСЕГО : 2D6C 11628 248//RE_InsertRTF


> [0] Andrey_rus ©   (25.08.07 17:55)
> RE_InsertRTF добавляет 1кб кода

11628-10976=652 байта если точнее :)


 
Andrey_rus ©   (2007-08-28 05:21) [7]


> У тебя сорцы Windows есть? :)


Я думал их частичная реализация находится в System или KOL.


 
Andrey_rus ©   (2007-08-28 16:31) [8]

Я вот, что подумал... Предположим я скопировал в карман определенную информацию, а программа, при выводе текста новым способом, может стереть эту информацию до того как я ее использую.


 
ANTPro ©   (2007-08-28 23:04) [9]

> [8] Andrey_rus ©   (28.08.07 16:31)

Надо сохранить старый буфер, а потом его "вспомнить".


 
Andrey_rus ©   (2007-08-29 03:47) [10]

И все таки через карман - извращение. :)


 
Vladimir Kladov   (2007-08-29 15:35) [11]

А если старый буфер - не текст, а графика (например)? А если там полгига было вставлено? Проще уж очистить его после себя, и как-нибудь дать знать пользователю. Или перед действием спросить, не нужны ли ему данные в буфере. Вывод: лучше оставить тот 1К "лишнего" кода, и не мучиться.


 
ANTPro ©   (2007-08-29 17:23) [12]

> [10] Andrey_rus ©   (29.08.07 03:47)

Других вариантов скорей всего нет. И не мне это надо :) я б оставил через ПСтрим.


> [11] Vladimir Kladov   (29.08.07 15:35)

Кстати у RichEdit нету работы с буфером или я просто не заметил? (EM_CANPASTE,EM_PASTESPECIAL)



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

Форум: "KOL";
Текущий архив: 2008.04.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.002 c
11-1188392350
Ruzzz
2007-08-29 16:59
2008.04.27
Не компилирует подменяемый system.pas


3-1196335571
abhtr
2007-11-29 14:26
2008.04.27
Помогите составить запрос


11-1188050116
Andrey_rus
2007-08-25 17:55
2008.04.27
TKOLRichEdit &amp; RE_InsertRTF


2-1206423967
Лена
2008-03-25 08:46
2008.04.27
как из delphi приложения распечатать html!!!


3-1196280048
Бэтман
2007-11-28 23:00
2008.04.27
Проблема с компонентом QuikReport





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