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

Вниз

Требуется справка по справке   Найти похожие ветки 

 
Volly ©   (2003-06-17 10:11) [0]

В одном help-е есть такая заметка:
Вопрос: Как вставить в нужное место Rich Text в TRichEdit?
Ответ: Вы можете послать сообщение EM_STREAMIN с параметром SFF_SELECTION методом Perform для замены текущего Selection.

А где определять этот самый Rich Text? Пробовал третьим параметром вставлять LongInt(@S), где S - это обычный string. Не помогает. Пожалуйста помогите. Thanks!

P.S. А может я не так понял смысл вопроса?


 
MBo ©   (2003-06-17 11:37) [1]

я вот твоего вопроса смысл не понял - ты этому хелпу удивляешься платонически или у тебя задача стоит RTF вставлять? Если второе, то достаточно внимательно прочитать хелп по EM_STREAMIN и See Also


 
Volly ©   (2003-06-17 12:27) [2]

Да... кажется я еще больший чайник нежели представлял раньше... :0)


 
Volly ©   (2003-06-17 12:52) [3]

> или у тебя задача стоит RTF вставлять
Да.

А где этот хелп отыскать? Ищу в своем дельфийском хелпе но слову em_streamin, нет результатов...


 
MBo ©   (2003-06-17 13:30) [4]

WinSDK Help


 
Volly ©   (2003-06-17 14:09) [5]


> MBo © (17.06.03 13:30)

Нашел. Прочитал. Умоляю! Напиши(те) example, а? PLEASE!!! Буду безмерно благодарен.


 
MBo ©   (2003-06-17 14:28) [6]

Дык... Прочитал же, вот и пиши, как в хелпе.
Пошли соообщение, указав последним параметром адрес структуры TEditStream, содержащей в себе адрес callback-функции (именно так описанной, как в richedit.pas, НЕ МЕТОД класса и stdcall)
в callback pbBuff заполняй RTF-данными.


 
Volly ©   (2003-06-17 14:56) [7]

Короче, либо я тупой, либо тупой Delphi, либо я полный ноль в английском языке, но в конце концов у меня получилось:

procedure TForm1.Button1Click(Sender: TObject);
var es:TEditStream;
s:string;
begin
s:="TEST";
es.pfnCallback(1,PByte(4),4,LongInt(@string(s)));
SendMessage(RichEdit1.Handle,EM_STREAMIN,SF_RTF,LongInt(@es))
end;


При попытке запуска выдает ошибку: Constant object cannot be passed as var parameter. Что делать не знаю.
Как я понял, то четвертый параметр в pfnCallBack служит для указания на переменную, указать которую я и пытался. Назначение третьего параметра мне понимается как указание на число байтов (символов) для вставки в RichEdit. Назначение первых двух параметров я не понял вообще :0(.


 
MBo ©   (2003-06-17 16:15) [8]

набросок


procedure TForm1.FormCreate(Sender: TObject);
begin
richedit1.Lines.Text := "111222333444";
richedit2.Lines.Text := "aaabbbccc";
richedit2.selstart := 3;
richedit2.sellength := 3;
richedit1.selstart := 3;
richedit1.sellength := 3;
richedit2.SelAttributes.Size := 16;
richedit2.SelAttributes.Color := clBlue;
end;

function EditStreamInCallback(dwCookie: Longint; pbBuff: PByte;
cb: Longint; var pcb: Longint): DWORD; stdcall;
begin
//здесь, возможно, понадобится анализ Position и Size потока
pcb := TStream(dwCookie).Read(pbBuff^, cb);
Result := 0; // Ord(pcb <> cb);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
ms: TMemoryStream;
est: TEditStream;
begin
Richedit2.PlainText := False;
ms := TMemoryStream.Create;
Richedit2.Lines.SaveToStream(ms);
ms.Position := 0;
est.dwCookie := Integer(ms);
est.dwError := 0;
est.pfnCallback := @EditStreamInCallBack;
SendMessage(RichEdit1.Handle, EM_STREAMIN, SF_RTF or SFF_SELECTION,
LPARAM(@est));
ms.Free;
end;



 
Volly ©   (2003-06-17 16:37) [9]

Огромное, преогромное и гиперогромное спасибо!!! :0)



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

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

Наверх




Память: 0.49 MB
Время: 0.011 c
3-97533
Fantasy
2003-06-06 03:43
2003.06.30
всетаки можно ли сортировать о вычисляемому полю


14-97801
Sergey
2003-06-11 17:44
2003.06.30
написание help-ов


14-97793
Danilka
2003-06-11 13:24
2003.06.30
хех, Вопрос НЕверящим в загробную жизнь.


6-97760
BoTToN!k
2003-04-24 14:06
2003.06.30
отправить мыло


1-97683
Aiax
2003-06-17 16:25
2003.06.30
Генерация CRC кода из символов и цифр