Так просто rtf не вставить. Точне просто, но не так  А как-то так:| Код | uses RichEdit;
///////
procedure AddRtf(RichEdit: TRichEdit; Rtf: string); function AddRtfCallback(dwCookie: Longint; pbBuff: PByte; cb: Longint; var pcb: Longint): Longint; stdcall; var Stream: TStream; begin Stream := TStream(dwCookie); Result := 0; with Stream do begin if (Size = position) then pcb := 0 else if (Size - Position) <= cb then pcb := Read(pbBuff^, Size) else pcb := Read(pbBuff^, cb) end; end; var EditStream: TEditStream; Stream: TStringStream; begin RichEdit.SelStart := MAXINT; Stream := TStringStream.Create(Rtf); try EditStream.dwCookie := Longint(Stream); EditStream.dwError := 0; EditStream.pfnCallback := @AddRtfCallback; RichEdit.Perform(EM_STREAMIN, SF_RTF or SFF_SELECTION, Longint(@EditStream)); finally Stream.Free; end; end;
// юзаем procedure TForm1.Button1Click(Sender: TObject); begin AddRtf(RichEdit1, '{\rtf1 12345 \up10 89012 \up0 34567}'); end; |
|