Форум: "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