Вот так можно склеить 2 ричедита:
| Код | procedure MergeRichText(re1, re2: TRichEdit); function AddRtfCallback(dwCookie: Longint; pbBuff: PByte; cb: Longint; var pcb: Longint): Longint; stdcall; var s: TStream; begin s := TStream(dwCookie); Result := 0; with s do begin if (Size = Position) then begin pcb := 0; Exit; end else if (Size - Position) <= cb then begin pcb := Size; Read(pbBuff^, Size); end else begin pcb := cb; Read(pbBuff^, cb); end; end; end; var ms: TMemoryStream; EditStream: TEditStream; begin re1.SelStart := MAXINT; ms := TMemoryStream.Create; re2.Lines.SaveToStream(ms); ms.Position := 0; try EditStream.dwCookie := Longint(ms); EditStream.dwError := 0; EditStream.pfnCallback := @AddRtfCallback; SendMessage(re1.Handle, EM_STREAMIN, SF_RTF or SFF_SELECTION, Longint(@EditStream)); finally ms.Free; end; end; |
2 параметра - ричедит в который текст добавить, второй - ричедит из которого текст добавить. P.S. uses RichEdit; |