![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TKOLRichEdit & RE_InsertRTF
Andrey_rus © (2007-08-25 17:55:00)Вставка предварительно отформатированного текста посредством функции RE_InsertRTF добавляет 1кб кода и это не удивительно судя по реализации. Есть ли более кодоэкономичный способ?
ANTPro (2007-08-29 17:23:00) [1]> [10] Andrey_rus © (29.08.07 03:47)
Других вариантов скорей всего нет. И не мне это надо :) я б оставил через ПСтрим.
> [11] Vladimir Kladov (29.08.07 15:35)
Кстати у RichEdit нету работы с буфером или я просто не заметил? (EM_CANPASTE,EM_PASTESPECIAL)
Vladimir Kladov (2007-08-29 15:35:00) [2]А если старый буфер - не текст, а графика (например)? А если там полгига было вставлено? Проще уж очистить его после себя, и как-нибудь дать знать пользователю. Или перед действием спросить, не нужны ли ему данные в буфере. Вывод: лучше оставить тот 1К "лишнего" кода, и не мучиться.
Andrey_rus (2007-08-29 03:47:00) [3]И все таки через карман - извращение. :)
ANTPro (2007-08-28 23:04:00) [4]> [8] Andrey_rus © (28.08.07 16:31)
Надо сохранить старый буфер, а потом его "вспомнить".
Andrey_rus (2007-08-28 16:31:00) [5]Я вот, что подумал... Предположим я скопировал в карман определенную информацию, а программа, при выводе текста новым способом, может стереть эту информацию до того как я ее использую.
Andrey_rus (2007-08-28 05:21:00) [6]
> У тебя сорцы Windows есть? :)
Я думал их частичная реализация находится в System или KOL.
ANTPro (2007-08-27 22:56:00) [7]
ВСЕГО : 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 байта если точнее :)
ANTPro (2007-08-27 22:49:00) [8]> [4] Andrey_rus © (27.08.07 22:48)
> Надо будет посмотеть реализацию
У тебя сорцы Windows есть? :)
Andrey_rus (2007-08-27 22:48:00) [9]Необходимо убедиться, что этот способ действительно даст меньше кода&данных. Надо будет посмотеть реализацию:
1. OpenClipboard
2. EmptyClipboard
3. SetClipboardData
4. CloseClipboard
ANTPro (2007-08-27 22:18:00) [10]В 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 18:29:00) [11]
> Вставлять текст из Clipboard.
Извращение какое-то :)
Можно пример?
ANTPro (2007-08-26 17:41:00) [12]Вставлять текст из Clipboard.